数据类型
- typeof是一个操作符而不是函数,因此例子中圆括号尽管可以使用,但不是必须的。
- 只要在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null
- NaN是一个特殊的数值,与任何值都不相等。
- 可以利用praseInt做进制转换器,parseInt(值,进制)
- 如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后都是零),parseFloat()会返回整数。
- 字符串的特点:字符一旦被创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。
- null和undefined没有toString()方法,但可以对其调String()方法
操作符
- --num和num--
--num变量的值是在语句被求值以前改变的(在计算机科学领域,这种情况通常被称作副作用)
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2;//等于21
var num4 = num1 + num2;//等于21
num--是在包含它们的语句被求值之后才执行的。
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2;//等于22
var num4 = num1 + num2;//等于21
位操作符
- 按位非(~),返回数值的反码
- 按位与(&),0|1返回0
- 按位或(|)0|1返回1
布尔操作符
- 逻辑非(!)
- 逻辑与(&&)
逻辑非
操作属于短路操作,如果第一个操作能决定结果,就不会再对第二个操作数求值。
- 逻辑或(||)
加性操作符
var a = 5 - ture;//4,ture被转换为1
var b = NaN - 1;//NaN
var c = 5-"";//5,“”被转化为0
var d = 5 - "2";//3,“2”被转化为2
var e = 5 - null;//5,因为null被转换成0
关系操作符
var a = "a"<3;//false,因为“a”被转换成了NaN
函数
在ECMAScript中的参数在内部用一个数组arguments来表示的。arguments对象只是与数组类似(它并不是Array的实例),但可以用length属性来确定传递进来多少个参数。
我们可以利用参数的个数的不同而对函数执行不同的操作。
所有的参数传递的都是值,不是引用。