变量
变量声明 :
语法:var 变量名字 = 任意的JS数据类型
var的作用:告诉浏览器,我后面的东西是个变量
变量的命名规则: 用数字/字母/下划线组合命名 ;
js的命名:驼峰式命名.
注意:变量是随时可变的量,变量的名字由我们自己起名;
但是这个变量具体是什么由后面所赋的具体值来决定。
eg:var null = 'lala' //错误命名
console.log(null)
var name = 'llll' //错误命名
console.log(name)
变量提升:
undefined:表示某个变量可以赋值。如果在开发中,出现undefined问题,一定是你的代码中某个变量没有赋值
JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面
js中作用域问题:
1>全局作用域:相对Window对象而言的,不论在哪里都可以访问变量。(全局变量容易发生变量污染问题)
2>局部作用域:在函数内部声明的变量就是局部,只有当前作用域下才可以访问变量
变量作用域:
* 全局作用域:在js中,Window对象下定义的变量是全局的,随时随地都可以访问
* 局部作用域:在函数内部定义的变量是局部的,正常不能被函数外部所访问
变量访问
* 1:如果在函数内部访问某个变量,访问变量的顺序,首先在自己的作用域找——>再去上一级域中找——>直到找到全局作用为止。 如果一直没有找到这个变量;会报错 xxxx is node define;如果在某个领域中找到了;那么就会停止往上层域找
* 2: 父域不能访问子域; 子域可以访问自己的父域 最大的域是:Window全局域
* 3: 变量访问的优先级 如果在函数体里定义了一个与全局变量名相同的局部变量,那么在该函数体里全局变量将不起作用,就相当于全局变量并不存在
注意: 函数名字也是特殊的变量,在函数外不可以访问函数内的变量的。