美文网首页
JavaScript中容易忽略的知识点

JavaScript中容易忽略的知识点

作者: 娜姐聊前端 | 来源:发表于2017-05-27 17:44 被阅读108次

    本文整理了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
    

    微信公众号:

    相关文章

      网友评论

          本文标题:JavaScript中容易忽略的知识点

          本文链接:https://www.haomeiwen.com/subject/yclgxxtx.html