美文网首页
1. 类型 2.值

1. 类型 2.值

作者: 招展君 | 来源:发表于2016-11-29 14:26 被阅读10次
    1. 一个js的bug,理论上跟undefined一样返回的是相应的类型,但是并没有


      Paste_Image.png
      Paste_Image.png
    2. 在做undefined判断时候 要尽量避免直接判断
    //不推荐:  原因是如果出于某种意外, b未定义(var声明),那么程序直接会报错
    if(b){
        XXX
    }
    //推荐的写法 
    if(typeof b =='undefined'){
        XXXX
    }
    
    Paste_Image.png
    Paste_Image.png
    1. 以上其实就是undefined(未定义) 和undeclared(未声明)的区别, 而js 中两者分的并不是很清楚。



    数组

    1. delete typeof 都是运算符, delete可以删除数组元素,但是length不会发生变化,只是删除了元素值


      Paste_Image.png
    2. 数组长度隐式变化


      Paste_Image.png
    3. 数组是特殊的对象,所以索引值也可以为非数字,但是并不记在length内


      Paste_Image.png
    4. 还有一点需要注意,那就是如果字符串键值可以被强转(这里的强转的只有数字字符串)成十进制数字的话,那么就会被当做数字索引来处理


      Paste_Image.png
    5. 有时候需要把类数组转成真正的数组,从而可以使用数组的各种方法, 其办法就是用数据工具函数如(indexOf/ concat /forEach 等等来实现,实现方法略不同),以下为数组的slice工具方法实现图


      Paste_Image.png
    //es6中  var arr = Array.from(arguments) 也可以实现同样的功能
    

    字符串

    1. 字符串某些部分和数组的确很相似,但它毕竟不是数组


      Paste_Image.png
    2. 数组的非变更方法可以借用给字符串来使用 比如 join,map
      Paste_Image.png
    3. 对于会变更数组原本值的方法,则不可用以上, 非要用,曲线方法就是字符串先转成数组,操作后再转回字符串
    4. undefined并不等于false,但是!undefined却等于true (开发中碰到的问题);


      Paste_Image.png

    数字

    1. 数字常亮也可以用Number的方法,不过需要注意个问题,如下图


      Paste_Image.png
    对于43.   这个小数点会先被识别成数字常亮的一部分,然后才是对象属性访问运算符
    
    1. Number.isInteger(num) 来判断数字是否是一个整数
    2. 非严格模式下可以给undefined赋值,不会报错,但是无效的。


      Paste_Image.png
    原因是null是个特殊关键字,而不是标识符,然而undefined 却是个标识符
    
    1. NaN 是js中唯一一个不等于自身的值,用这个特点来检验数字是否有效


      Paste_Image.png

      所以判断一个数字是否有效并不能用如下的办法, 需要用到isNaN, 但是给isNaN传入一个非数字参数后仍会返回true, 所以并不保险。


      Paste_Image.png

    相关文章

      网友评论

          本文标题:1. 类型 2.值

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