逻辑运算符在运算时,有个规则:
1、当逻辑运算符前面的表达式(的值),能够决定整个表达式的结果时,那么最终表达式的结果就是前面表达式的结果,这就是逻辑短路。
2、当逻辑运算符前面的表达式(的值),不能决定整个表达式的结果时,那么最终表达式的结果就是后面表达式的结果
以下几种运算情况:
1、数字:非零为真,零为假。
2、字符串:空字符串是假,非空字符串是真
3、null:被认为是假
4、undefined:被认为是假
5、object类型:认为是真
以下为示例代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <input type="button" value="测试" onclick="testf()"> </body> </html> <script> function testf(){ //1)、数字:非零为真,零为假。 console.log(true && 2);//2,因为,前面为true,与运算还得看后面的表达式,后面的表达式结果决定了整个表达式的结果。 console.log(2 && true);//结果是true,因为,非零为true,所以,2是true,与运算,前面的表达式是为true时,后面的表达式的结果决定了整个表达式的结果 console.log(2 && 1);//结果是1,因为,非零为true,所以,2是true,与运算,前面的表达式是为true时,后面的表达式的结果决定了整个表达式的结果 console.log(true && 0);//0 console.log(0 && true);//前面的0是假,所以,前面的表达式的结果为整个表达式的结果,所以是0。 // 2)、字符串:空字符串是假,非空字符串是真 console.log("hello" && false);//false; console.log("" && true);//""; console.log("hello" && true);//true; console.log(true && "hello");//"hello"; console.log(true && "hello");//"hello"; //3)、null:被认为是假 console.log(null && false);//null; console.log(true && null);//null; console.log(false && null);//false; //4)、undefined:被认为是假 console.log(undefined && false);//undefined; console.log(true && undefined);//undefined; console.log(false && undefined);//false; //5)、object类型:认为是真 console.log({} && false);//false; console.log({} && true);//true; console.log(true && {});//{}; //6)、数组:数组也是对象,认为是真 console.log([] && false);//false; console.log([] && true);//true; console.log(true && []);//[]; } </script>