首页 > 代码库 > 高程(3):操作符、for、for...in循环、break/continue/return语句、函数等
高程(3):操作符、for、for...in循环、break/continue/return语句、函数等
1、关系操作符
注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值。
如:"a" > "b" 返回 false;"a" > "B" 返回 true;
2)[特别注意]如果是比较两个数字类型的字符串,也是按照字符编码值比较。
如:"256" > "6" 返回 false;
2、相等==和全等===
区别:相等比较有隐式类型转换,而全等则没有类型和数据都要相等才能返回true。
3、逗号操作符
注意点:下面代码中的写法注意区分,b2会变成全局变量
function show(){ var a1 = 1, a2 = 2; var b1 = b2 = 3; }console.log(b2); //b2成为全局变量
4、for循环
注意点:如下代码,for循环内部定义的变量是父级作用域的变量,for、if循环没有内部块级作用域
for(var i = 0; i < 10; i++){ var a = 3;}
5、for...in...循环:一般用于循环处理json、object,获取key、value做后续处理。
注意点:由于object对象的属性没有顺序,故for...in...循环输出的属性名顺序是不可预测的。
var json = { "23": 23, "12": 12, "2": 2};for(var key in json){ console.log(key); //分别返回 2,12,23}
6、break、continue、return语句区别
1)break:跳出上一级for循环
var num = 0;function show(){ for(var i = 0; i < 10; i++){ if(i%5==0){ break; } num++; } num++;}show();console.log(num); //返回1
2)continue:跳出当前次的后续操作,继续下一次for循环操作。
var num = 0;function show(){ for(var i = 0; i < 10; i++){ if(i%5==0){ continue; } num++; } num++;}show();console.log(num); //返回9
3)return:跳出当前函数
var num = 0;function show(){ for(var i = 0; i < 10; i++){ if(i%5==0){ return; } num++; } num++;}show();console.log(num); //返回0
7、switch语句:如果有又臭又长的if,可以用switch来处理,更加清晰、易于维护
注意点:switch的case操作可以使用表达式。
var num = 10;switch(true){ case num < 0: alert(‘<0‘); break; case num > 0: alert(‘>0‘); break; case num == 0: alert(‘=0‘); break; }
8、函数
注意点:理解函数参数
函数内部的arguments类数组永远对应调用函数时所传的实参
function abc(a, b){ //此时 a = arguments[0] = 2; b = undefined; b = 3; //b = 3; arguments[1] = 4; // 不变 return b; //返回 3}cosole.log(abc(2)); //3
function abc(a, b){ //此时 a = arguments[0] = 2; b = arguments[1] = 8; b = 3; //b = arguments[1] = 3; arguments[1] = 4; // b = arguments[1] = 4; return b; //返回 4}cosole.log(abc(2, 8)); //4
function abc(a, b){ console.log(arguments.length); //1 arguments[1] = 2; console.log(b); //undefined console.log(arguments.length); //1}abc(2);
PS:1)js中函数没有重载,定义同名函数,后面的函数会覆盖前面函数。
2)可以根据arguments参数的个数判断,来处理不同个参数情况下对程序的控制。
function fn(){ if(arguments.length == 1){ return arguments[0] + 10; }else if(arguments.length == 2){ return argument[0] + arguments[1] + 20; }}
建议:有参数时使用json对象的形式作为参数传递,好处:1)简洁明了;2)可维护性高
function fn(options){ options.a = options.a || "10"; //默认赋值10 for(var key in options){ console.log(key, options[key])}}fn({ a: 1, b: 2})
高程(3):操作符、for、for...in循环、break/continue/return语句、函数等