操作符
1. 一元操作符
1)递增和递减操作符(++/–):前置在被求值之前执行,后置在之后
2) 一元加和减操作符
2. 位操作符
1)按位非(~)
2)按位与(&)
3)按位或(|)
4)按位异或(^):同为0异为1
5)左移(<<)
6)右移(>>)
var old = 2; //等于二进制的10
var new = old << 5; //等于二进制的1000000,十进制的64
3. 布尔操作符
1)逻辑与(&&):如果第一个操作数可以决定结果,则不会再对第二个操作数求值。
2)逻辑或(||)
3)逻辑非(!)
alert(!false); //true
alert(!"blue"); //false alert(!0); //true alert(!NaN); //true alert(!""); //true alert(!12345); //false
4. 乘性操作符
1)乘法(*)
2)除法(/)
3)求模(%)
5. 加性操作符
1)加法:如果只有一个操作符是字符串,则将操作数转换为字符串,然后再将两个字符串拼接起来。 var result = 5 + "5"; //"55"
2)减法
6. 关系操作符
小于(<)、大于(>)、小于等于(<=)、大于等于(>=)这几个关系操作符都返回一个布尔值。如果两个操作数都是字符串,则比较两个字符串所对应的字符编码值;如果其中一个是字符串,则将其转换为数值再进行比较。
var result1 = "Brick" < "alphabet"; //true "B"的字符编码小于"a" var result2 = "Brick".toLowerCase() < "alphabet".toLowerCase(); //false var result3 = "23" < "3"; //true "2"的字符编码比"3"小 var result4 = "23" < 3; //false "23"被转换为23
7. 相等操作符
1)相等与不相等(==):先转换再比较
2)全等与不全等(===):不转换直接比较
var result1 = ("55" == 55); //true "55"被转换为55 var result2 = ("55" === 55); //false
8. 条件操作符 var max = (num1 > num2) ? num1 : num2 //取两者最大值
9. 赋值操作符
10. 逗号操作符 var num1 = 1, num2 = 2, num3 = 3
语句
1. if语句
最佳实践是始终使用代码块:
if(i >25) {
alert("More than 25."); } else if (i < 0) { alert("Less than 0."); } else { alert("Between 0 and 25"); }
2. do-while语句
后测试循环语句,常用于循环体中代码至少要被执行一次的情形。
do {
statement
} while (expression);
3. while语句
前测试循环语句 while(expression) statement
4. for语句
前测试循环语句,使用while做不到的,for也做不到,只是把与循环相关的代码集中在了一个位置。 for (;;) //无限循环
5. for-in语句
用来枚举对象的属性
for (var propName in window) {
document.write(propName); }
6. label语句
在代码中添加标签,与for语句等配合使用。
7. break和continue语句
break语句立即退出循环,强制继续执行循环后面的语句;
continue语句立即退出循环,但退出后会从循环的顶部继续执行。
var num = 0;
for (var i=1; i < 10; i++) { if (i % 5 == 0) { //break;continue; } num++; } alert(num); //4,8
8. with语句
将代码的作用域设置到一个特定对象中,严格模式不允许使用。
9. switch语句
switch (i) {
case 1:
alert("1");
break; case 2: alert("2"); break; case 3: alert("3"); break; default: alert("Other"); }
函数
function name(arg0, arg1,...,argN) { statements };
1)函数在定义时不必指定是否返回值;
2)函数在执行return语句之后停止并立即退出,其后的任何代码永远不会执行;
3)return语句也可以不带有任何返回值,只用作停止函数,将会返回一个undefined值;
4)参数类型、个数完全自由,可以通过arguments对象访问参数数组,arguments.length获取参数个数,arguments和参数对应值保持同步;
function doAdd() {
alert(arguments.length); if(arguments.length == 1) { alert(arguments[0] + 10); } else if (arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); //1,20 doAdd(30, 20); //2,50
5)没有传递值得命名参数将被自动赋予undefined值;
6)没有函数签名,无法实现函数重载。