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);// 错误

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

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

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

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'; };
相关文章
相关标签/搜索