《JavaScript语言精粹》笔记

时间:2024-05-23 16:04:32

0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。

1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数,所以1和1.0的值相同。

2、NaN是一个数值,表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它本身。可以用函数isNaN(number)检测NaN,但是建议用isFinite()来检测某值是否是数字。

  • typeof NaN === ‘number’   //true
  • NaN === NaN //false
  • NaN !== NaN  //true
  • isNaN(0)   isNaN(‘0′)  //false
  • isNaN(NaN)   isNaN(‘oops’)  //true

3、JavaScript没有字符类型。要表示字符,只需创建仅包含一个字符的字符串即可,一旦被创建,就是不可变的。在被创建的时候,Unicode是一个16位的字符集,所以JavaScript中的所有字符都是16位的。

4、false、null、undefined、空字符串、0、NaN都被认为是false。除此之外的其它值都是true,包括’false’、new Boolean(false)。

5、typeof运算符产生的值有:’number’、’string’、’boolean’、’undefined’、’function’、’object’。对于数组或null,typeof均返回’object’。

6、若第一个运算数是假,&&返回第一个运算数的值,反之,返回第二个;若第一个运算数是真,||返回第一个运算数的值,反之,返回第二个;

7、arguments拥有一个length属性,但不是数组,它没有任何数组的方法。

8、用于处理正则的方法:regexp.exec()、regexp.test()、string.match()、string.replace()、string.search()和string.split()【可参见:JavaScript正则表达式】

9、正则表达式因子:\   /  [  ]  (   )  {  }  ?  +  *   |  .  ^  $。若要匹配因子,在字面量中用\进行转义,在RegExp对象中则双写\。注意\前缀不能使字母或数字字面化。

10、正则表达式分组

  • 捕获型:一个捕获型分组是一个被包围在圆括号中的正则表达式分支。任何匹配这个分组的字符都会被捕获。每个捕获型分组都被指定了一个数字。1是第一个捕获分组,2是第二个,依此类推。
  • 非捕获型:非捕获型分组带 ?: 前缀。它仅做简单的匹配,并不捕获匹配文本,也不干扰捕获型分组的编号
  • 向前正向匹配:带 ?=  前缀,类似于非捕获型分组,但在这个组匹配之后,文本会倒回到它开始的地方,实际上不匹配任何东西。
  • 向前负向匹配:带 ?!  前缀 ,类似于向前正向匹配,但是只有它匹配失败时它才继续向前进行匹配

11、关于 == 的有趣例子

  • ‘ ‘ == ‘0’           //false
  • 0 == ‘ ‘            //false
  • 0 == ‘0’          //true
  • false == ‘false ‘   //false
  • false == ‘ 0′  // true
  • false == undefined   //false
  • false == null     //false
  • null  ==  undefined  //true
  • ‘  \t\r\n  ‘ == 0  //true