主要是为了说明一下忘记写 break 时的情况。当忘记写 break 时,代码将会执行后面所有 case 分支里面的代码,前面的 case 会跳过案例如下:
// 测试不使用break跳出循环
function testSwichNotBreak() {
var number = document.getElementById("test").value;
number=parseInt(number);
switch (number){
case 1: document.write(number);
case 2: document.write(number)
case 3:document.write(number);
case 4:document.write(number);
case 5:document.write(number);
default :document.write(number);
}
}
<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;
console.log(!""); //true
console.log(!d); //true
console.log(!a); //false
console.log(!b); //false
console.log(!obj); //false
</script>
505JavaScript switch语句
主要是为了说明一下忘记写 break 时的情况。当忘记写 break 时,代码将会执行后面所有 case 分支里面的代码,前面的 case 会跳过案例如下:
// 测试不使用break跳出循环 function testSwichNotBreak() { var number = document.getElementById("test").value; number=parseInt(number); switch (number){ case 1: document.write(number); case 2: document.write(number) case 3:document.write(number); case 4:document.write(number); case 5:document.write(number); default :document.write(number); } }尝试一下 »
504JavaScript switch语句
主要是为了补充当两种情况相同时,switch 语句的使用,当两种情况相同时,可以只在第二种情况中写要执行的代码,案例如下:
//测试 switch语句,当 两种情况相同时,比如下面的10或者11,都会走 alert("10或者11") 这里 function testSwich() { var number = document.getElementById("test").value; number=parseInt(number); switch (number){ case 1: alert(1); break; case 10: case 11:alert("10或者11"); //number = 10 或者 = 11执行相同的操作 break; default :alert("既不是1,10,11"); } }尝试一下 »
503JavaScript 条件语句
提一个优化 if 的方法
可以这样写:
const condition = condition1 let obj = { 'condition1' : () => { ... }, 'condition2' : () => { ... }, 'condition3' : () => { ... }, } obj[condition]()实例:
const condition = 2 let obj = { '1' : () => { document.write(1) }, '2' : () => { document.write(2) }, '3' : () => { document.write(3) }, } obj[condition]()尝试一下 »
502JavaScript比较
首先说一下,其他数据类型转换为布尔类型的规则: null、undefined、0、NaN、空字符串转换为false,其他转化为 true。
JavaScript 中有三种逻辑运算符:
1. 取反 !
首先把数据转化为布尔值,然后取反,结果为 true 或 false。
2. 逻辑与 &&
JavaScript 中逻辑与和其他语言不太一样,如果第一个操作数是 true(或者能够转为 true),计算结果就是第二个操作数,如果第一个操作数是 false,结果就是 false(短路计算),对于一些特殊数值不遵循以上规则。(个人理解为:如果运算的第一个操作数为true,则返回第二个操作数,反之则返回第一个操作数)
<script type="text/javascript"> var a = [1,2,3]; var b = "hello"; var obj = new Object(); var d; console.log(true && 10); //第一个操作数是true,结果是第二个操作,也就是10 console.log(false && b); //第一个操作数是false,结果flase console.log(100 && false); //第一个操作数是100,结果flase console.log(undefined && false); //第一个操作数是undefined,结果undefined console.log(NaN && false); //第一个操作数是NaN,结果NaN console.log(null && false); //第一个操作数是null,结果null console.log('' && false); //第一个操作数是空串,结果空串 console.log(0 && 100); //结果是0 console.log(5 && 100); //100 console.log(a && b); //hello console.log(obj && 200); //200 </script>3. 逻辑或 ||
如果第一个操作数不是 false,结果就是第一个操作数,否则结果是第二个操作数。如果第一个操作数能够转为 true,结果就是第一个操作数(个人理解为:如果运算的第一个操作数为 true,则返回第一个操作数,反之则返回第二个操作数)
<script type="text/javascript"> var a = [1,2,3]; var b = "hello"; var obj = new Object(); var d; console.log(true || 10); //第一个操作数是true,结果是第一个操作,也就是true console.log(false || b); //第一个操作数是false,结果是第二个操作数b console.log(100 || false); //第一个操作数是100,结果100 console.log(undefined || 9); //第一个操作数是undefined转false,结果9 console.log(NaN || false); //第一个操作数是NaN转false,结果第二个操作数 console.log(null || a); //第一个操作数是null转false,结果a console.log('' || false); //第一个操作数是空串转false,结果第二操作数 console.log(0 || 100); //结果是100 console.log(5 || 100); //5 console.log(a || b); //a console.log(obj || 200); //obj </script>501JavaScript 比较和逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。除了常用的返回布尔值,也可以利用运算符的逻辑来获得我们想要的数字或枚举变量:
尝试一下 »
不难理解在这里 0 即为 false, >=1 的变量为 true, 并没有去“运算”数字,而只是根据与或的逻辑依靠布尔值来返回对应的变量。