javascript — 变量

做事备受发觉原生 js 还有待提高,只好又啃一布满高程3了。

 

ECMAScript的变量是麻木不仁型的,所谓松散型就是(变量)可以为此来保存任意档次的数码。换句话说每个变量仅仅是在特定的时空内保存值的占位符而已。

所谓特定的时刻便是变量的生命周期。

关于生命周期就要说到‘作用域’,进而得说‘作用域链’。此处就开简单介绍,后面会详细介绍作用域和意向域链。

js中无块状作用域( if语句 ),只有全局作用域和函数作用域。

 

(var定义之变量将称该作用域中的一对变量
即全局下就是全局变量,函数内就是有的变量)

 

大局作用域:在大局下中(全局定义或函数内无定义只赋值的变量),即window下还足以利用。

函数作用域:只在部数体内中,函数运行完函数、变量立即销毁,这吗是力不从心在外边引用函数内之变量的原委。

定义:

 

var message;
var user;

 或者

 var message,

  user;

 

 

 

概念了号称也message
user的变量,可以为此来保存任何价值。未初始化的相会保留一个undefined

console.log(message);// undefined

函数退出后,变量销毁.

function test(){
var msg='hi'; // 局部变量
}
test();
console.log(msg);// 错误

函数体内无定义只赋值的变量是全局变量:

function test(){
 msg='hi';// 全局变量 不太推荐 因为在局部定义全局变量 难以维护
}
test();
console.log(msg);// 'hi'

变量提升(只是声明提升,赋值(初始化)没有提升):

function test(){
console.log(msg);
var msg='hi';
};
test();// undefined
console.log(msg);// msg is not defined
由此可以看出变量 msg 提升到了函数test()的顶部,初始化并没有提升,如下:

function test(){
var msg;
console.log(msg);
msg='hi';
};