JavaScript中容易忽略的知识点

JavaScript中容易忽略的知识点

本文整理了JavaScript中容易出错,或者易被忽略的知识点。

1. String是不可变类型

字符串类型String是不可变类型,也就是说,字符串本质上是不能改变的。

var s1 = "abc";
var s2 = s1;
s2+="ef";
console.log(s1); // "abc"
// 这个例子,也可以从“简单类型的赋值是值赋值”角度来分析
2. null类型是一个假对象

null是对象类型,typeof null === "object",含义为“没有任何对象引用”。注意,这点和undefined 不同,undefined值变量没有初始化赋值。

null没有对应的Null类,因此,它无法继承Object原型上的任何方法。

null.toString(); // Uncaught TypeError: Cannot read property 'toString' of null
3. 为什么简单类型字符串可以调用方法?

声明一个字符串var str = "abc";,调用方法str.toUpperCase()将其转为大写,这时,字符串会先隐式转换为字符串对象,然后调用String.proptype上面的toUpperCase方法。

4. 两个不同类型的值如何做相等判断?

如果是其中一个值是简单类型,那么,将两者都隐式转换为数值类型之后,再根据数值比较大小。

如果一方为字符串值,另一方为对象引用,那么,调用Object.toString()将对象引用转为字符串之后,再对两个字符串内容进行比较。

5. 为什么会阻止页面跳转?

如果href属性中的表达式有值,a标签将其认为是有效的url并跳转到该页面。

如果href属性设置为undefined,a标签认为是无效url,不会跳转。

<!-- 发生跳转-->
<a href="null">click me</a> 
<!-- 不发生跳转-->
<a href="">click me</a>

void是一个操作符,该操作符指定要计算一个表达式但是不返回值。所以,<a href="javascript:void(0)">的返回值为undefined,点击a标签不会发生页面跳转。常用如下方式提交表单:

<a href="javascript:void(document.form.submit())">
6. 0.1 + 0.2 != 0.3

JavaScript采用“IEEE 754 标准定义的双精度64位格式”表示数字,所以,JavaScript不区分整数值和浮点值,所有数字都用浮点值表示
测试结果为:

0.1 + 0.2 === 0.30000000000000004

猜你喜欢

转载自blog.csdn.net/weixin_41791345/article/details/79546642