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. <a href="javascript:void(0)">为什么会阻止页面跳转?

如果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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 1.HTML DOM (Document Object Model) document.getElementByI...
    廖马儿阅读 1,450评论 0 17
  • 果然,人是不能多想的,因为一旦多想之后,便会有各种各样的痛苦,师姐今天送给我了一份面试资料,一下子感觉时间非常紧迫...
    阅读修身阅读 433评论 0 0
  • 5.1开始了我的SMM互助群,到今天整整一个月。三月份参加了好报的写作群,四月份参加了陈优君的早起群,然后萌生...
    JC贾阅读 665评论 0 1
  • 我:“弘乐!” 弘乐:“干嘛?” 我:“弘乐!” 弘乐:“干嘛啊?” 我:“没事,你名字好搞笑,我叫着玩。” 弘乐...
    蔡凡阅读 784评论 0 1