所有编程语言都有的操作符和语句,大部分内容都差不多。这里回顾回顾,重点讲讲js的操作符和语句跟其他语言不同的地方。
一,操作符
一元操作符和位操作符就不说了,用得太少了,要用的时候看也不迟。js的操作符操作符最值得注意的地方是:会把处理的数据变成自己操作的类型,然后进行操作。
(1)布尔操作符
逻辑非(!):值得注意的是对象,非空字符串,非0数值都会先转化成true;而"",0,null,NaN,undefined都会先转化成false。
alert(!false); //true
alert(!"blue"); //false
alert(!0); //true
alert(!NaN); //true
alert(!""); //true
alert(!12345); //false
逻辑与($$):要注意的地方是:
1. 短路操作
2.第一个操作数是对象,返回第二个操作数。第二个操作数是对象时,第一个返回true的话,返回第二个操作数。
3.有一个操作数是null,NaN, undefined 时,返回null,NaN, undefined。
逻辑或(||):和与的区别是第二个操作数是对象时,第一个返回false的话,返回第二个操作数。
可以利用逻辑或来避免为变量赋非法值,如var num = num1 || num2 当num1为空时,num2还可以顶上。
(2)乘法操作符
没什么好说的,Infinity*0 结果是NaN
(3)加性操作符
要注意的是,有两点:
1. true和false会转化成1和0,null, undefined被转化成0,有NaN的结果都是NaN
2.操作数为字符串时,+会变成字符串拼接符号。
var result1 = 5 + 5; //two numbers
alert(result1); //10
var result2 = 5 + "5"; //a number and a string
alert(result2); //"55"
(4)关系操作符
1,当一个操作数是数字,另一个不是的时候,会把另一个操作数转化成数字,不能转化的话结果就是false
2,当两个操作数都是字符串的时候,按顺序比较字符的编码,值得注意的是 “23”<“3”
3,如果操作数是对象,就会调用对象的valueOf()方法,没有就调用toString()方法
4,值得注意的是 null>0 为false null>=0 为true(http://www.jb51.net/article/106370.htm)
(5)相等操作符
1,值得注意的是:null和undefined是相等的,但是不等于0 (此时不尝试转换,直接为false)
2,全等(===),除了不转换操作数,其他都和==一样
二,语句
语句值得一提的地方只有switch。js的switch可以使用任何数据类型,case的值可以是变量或者表达式
switch ("hello world") {
case "hello" + " world":
alert("Greeting was found.");
break;
case "goodbye":
alert("Closing was found.");
break;
default:
alert("Unexpected message was found.");
}
var num = 25;
switch (true) {
case num < 0:
alert("Less than 0.");
break;
case num >= 0 && num <= 10:
alert("Between 0 and 10.");
break;
case num > 10 && num <= 20:
alert("Between 10 and 20.");
break;
default:
alert("More than 20.");
}
就说这么多吧,结束。