js 与或运算符 || && 妙用
2016-06-07 10:50
351 查看
平常写判断条件的代码
var add_level = 0;
if(add_step == 5){
add_level = 1;
}
else if(add_step == 10){
add_level = 2;
}
else if(add_step == 12){
add_level = 3;
}
else if(add_step == 15){
add_level = 4;
}
else {
add_level = 0;
}
这里顺便提下:经常有人问我,看到很多代码if(!!attr),为什么不直接写if(attr);
其实这是一种更严谨的写法:
请测试 typeof 5和typeof !!5的区别。!!的作用是把一个其他类型的变量转成的bool类型。
下面主要讨论下逻辑运算符&&和||。
几乎所有语言中||和&&都遵循“短路”原理,如&&中第一个表达式为假就不会去处理第二个表达式,而||正好相反。
js也遵循上述原则。但是比较有意思的是它们返回的值。
代码:var attr = true && 4
&& “aaa”;
那么运行的结果attr就不是简单的true或这false,而是”aaa”
再来看看||:
代码:var attr = attr || “”;这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用。
用与或运算符后
var add_level = (add_step==5 && 1) || (add_step==10 && 2) || (add_step==12
&& 3) || (add_step==15 && 4) || 0;
首先我们来梳理一下一个概念,请你一定要记住:在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true(好像没有遗漏了吧,请各位确认下)。这个一定要记住,不然应用||和&&就会出现问题。
var add_level = 0;
if(add_step == 5){
add_level = 1;
}
else if(add_step == 10){
add_level = 2;
}
else if(add_step == 12){
add_level = 3;
}
else if(add_step == 15){
add_level = 4;
}
else {
add_level = 0;
}
这里顺便提下:经常有人问我,看到很多代码if(!!attr),为什么不直接写if(attr);
其实这是一种更严谨的写法:
请测试 typeof 5和typeof !!5的区别。!!的作用是把一个其他类型的变量转成的bool类型。
下面主要讨论下逻辑运算符&&和||。
几乎所有语言中||和&&都遵循“短路”原理,如&&中第一个表达式为假就不会去处理第二个表达式,而||正好相反。
js也遵循上述原则。但是比较有意思的是它们返回的值。
代码:var attr = true && 4
&& “aaa”;
那么运行的结果attr就不是简单的true或这false,而是”aaa”
再来看看||:
代码:var attr = attr || “”;这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用。
用与或运算符后
var add_level = (add_step==5 && 1) || (add_step==10 && 2) || (add_step==12
&& 3) || (add_step==15 && 4) || 0;
首先我们来梳理一下一个概念,请你一定要记住:在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true(好像没有遗漏了吧,请各位确认下)。这个一定要记住,不然应用||和&&就会出现问题。
相关文章推荐
- js模态弹窗
- javascript基础知识
- Gson解析json数据
- 【JS设计模式】责任链模式的代码示例
- 【转】JavaScript 正则表达式上——基本语法
- js拼字符串传action时 不要用#号拼接,用逗号
- javascript基础语法——表达式
- 客户端js判断文件类型和文件大小即限制上传大小
- JavaScript实现九九乘法表的简单实例
- javascript如何定义对象数组
- 在JavaScript中创建命名空间的几种写法
- js判断为空Null与字符串为空实例
- js判断输入的数据是否是正整数,包括100.00(100.000)
- JavaScript_compare_C++_部分类似处
- JSON对象遍历和处理
- 以.jsp和.html作为后缀的不同
- javascript函数作用域和嵌套调用关系
- ExtJs6 grid中根据返回数据结果动态添加checkcolumn组件
- js Date 获取 年 月 日 具体的值
- js中两种创建对象的方法