1. 类型 2.值

2016-11-29  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读