带var与否的区别(1)

带var与否的区别

区别

  • [ ] 带var:在赋值前面不会报错–>undefined
  • [ ] 不带var:不能进行预解释,在前面执行会报错

本质关系

  • [ ] var num=12
    • 不仅给全局作用域增加全局变量num
    • 还给window增加属性名num,其属性值是12
  • [ ] num=12
    • 相当于给window增加属性名num,其属性值是12;

私有域中出现不带var的变量

私有域中出现不带var的变量,则往上级作用域查找,直到找到或直到window为止,window中也没有会出现以下两种情况!

  • [ ] 想要获取值:
    • console.log(total);–>报错
  • [ ] 想要设置值:
    • total=100;–>相当于在全局中不加var(给window增加一个属性名total,其属性值为100)

例如

1
2
3
4
5
6
function fn(){
console.log(total); //-->报错
total=100;
}
fn();
console.log(total); //-->不执行

1
2
3
4
5
6
function fn(){
//console.log(total); //注释掉
total=100;
}
fn();
console.log(total); //-->100
  • 注意:js在不做特殊处理的情况下,上面代码报错,下面代码不执行