<script>
// 1、用我们的布尔值参与的逻辑运算 true&&false == false
// 2、123 && 456 是 值 或者是 表达式 参与逻辑运算?
// 3、逻辑与短路运算
// 如果表达式1 结果为真 则返回表达式2
// 如果表达式1 结果为假 那么返回表达式1
console.log(123 && 456); // 456
console.log(0 && 456); // 0
console.log(0 && 1 + 2 && 456 * 456789); // 0
console.log('' && 1 + 2 && 456 * 456789); // ''
// 如果有空或者否定的为假 其余是真的 0 '' null undefined NaN
// 4、逻辑或短路运算
// 如果表达式1 结果为真 则返回表达式1
// 如果表达式1 结果为假 则返回表达式2
console.log(123 || 456); // 123
console.log(123 || 456 || 456 + 123); // 123
console.log(0 || 456 || 456 + 123); // 456
var num = 0;
console.log(123 || num++);
console.log(num);
</script>
全局变量: 在全局作用域下的变量 在全局都能使用
注意:如果在函数内部 没有声明直接赋值的变量也属于全局变量
1、js引擎运行js 分为两步:预解析 代码执行
(1)、预解析 js引擎会把js 里面所有的var 还有function 提升到当前作用域的最前面
(2)、代码执行 按照代码书写的顺序从上往下执行
2、预解析分为 变量预解析(变量提升)和函数预解析(函数提升)
(1)、变量提升 就是把所有的变量声明提升到当前作用域最前面 不提升赋值操作
(2)、函数提升 就是把所有的函数声明提升到当前作用域最前面 不调用函数