-
注释
尽量避免使用块级注释,可以避免下面错误:var rm_a = /a*/.match(a);
-
标识符
字母开头,后面可选择性添加1个或多个字母、数字或下划线 -
数字
- javascript只有一个数字类型,内部被表示为64位的浮点数,其没有分离出整数类型,所以1和1.0的值相同
- 如果一个数字字面量具有指数部分,那么这个字面量的值等于e之前的数值与10的e之后数字的次方相乘。如100等于1e2(1e2-->1*10的平方)
- NaN是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括自身。可以使用isNaN(number)检测NaN
- Infinity表示所有大于1.79769313486231570e+308的值
-
字符串
字符串字面量可以包在单引号或双引号中,可能包含0或多个字符。\是转义字符,Unicode是一个16位的字符集,javascript的所有字符都是16位的。javascript没有字符类型。//\u表示使用unicode编码 console.log("A" === "\u0041") //true //字符串有一个length属性,用于获取字符串的长度 console.log("string".length); //6 //字符串是不可变的。但是可以通过+连接其他字符串创建一个新的字符串,两个字符和字符顺序完全相同的字符串被认为是相同字符串,即使存储空间不同 console.log("c" + "a" + "t" === "cat"); //true
-
语句
- 一个编译单元包含一组可执行的语句。每个script标签提供一个被编译且立即执行的编译单元。因为缺少连接器,javascript把它们放在一个公共的全局命名空间中。
- 在if,switch,while,for语句中,被理解为false的值有:
false, null, undefined, '', 0, NaN
其它所有值为true,包括字符串'false',以及所有对象
但是,这不意味着它们与false进行==运算时,结果为trueconsole.log(false == null); //false console.log(false == undefined); //false console.log(false == ' '); //true console.log(false == ''); //true console.log(false == 0); //true console.log(false == NaN); //false console.log(null == undefined) //true console.log(null == NaN) //false console.log('' == 0); //true console.log(' ' == 0) //true
总结:
- null和undefined进行==运算时,都转成undefined对象,所以null == undefined 为true
- NaN不会转成其它对象,所以NaN不等于其它任何数,前面也说了它甚至不等于自己,仅仅表示一个无法表示的计算结果
- ''和 ' '进行==运算时,转成0。而0 == false
- 一个奇怪的现象:
在javascript中,对于n(n>=1),n == true,只有n=1成立;
而对于!n == false,所有的n都成立
-
表达式
最简单的表达式包括:
1: 字面量值(字符串或数字)
2: 变量
3: 内置的值(true,false,null,undefined)
4: 以new开头的调用表达式
5: 以delete开头的属性提取表达式
6: 包在圆括号中的表达式
7: 以一个前置运算符前导的表达式
.... -
类型
javascript有5中基本数据类型,number, object, undefined, function, boolean
使用typeof可以判断变量的数据类型
以下是一些使用typeof的例子:console.log(typeof NaN); //number console.log(typeof '123'); //stirng console.log(typeof true); //boolean console.log(typeof undefined); //undefined console.log(typeof function(){}); //function console.log(typeof null); //object console.log(typeof []); //object
网友评论