- 变量的定义、作用、分类
- 变量声明和赋值
- 连续赋值*
- 变量作用域*
- 变量声明提升*
问题
//问题一
var a = 5;
var a;
console.log(a);
//问题二
var b;
console.log(b = 3);
//问题三
var l = m, m = 6;
console.log(l);
console.log(m);
//问题四
var x = 0;
function f(){
var x = y = 1;
}
f();
console.log(x);
console.log(y);
//问题五
var a = {n:1};
a.x = a = {n:2};
alert(a.x);
//问题六
var a = 1;
function b() {
a = 10;
return;
function a() {
}
}
b();
alert(a);
//问题七
var x = 1;
function foo () {
console.log(x);
}
function invokeFoo(){
var x = 2;
foo();
}
invokeFoo();变量是用来存储数据的容器,变量的名称也叫标识符(identifier)。执行环境(执行上下文)定义了变量或函数有权访问其他数据,变量可以根据它所处的环境分为全局变量(在函数外,定义的变量)、局部变量(在函数内,使用var定义的变量)、块级变量(es6的新特性)
声明变量语句,使用var操作符,后面跟变量名(即一个标识符)
//声明变量
var a;
var b;一条语句可以声明多个变量,由逗号,隔开
//一次声明多个变量
var c, d, e;在声明一个变量的同时可以为这个变量分配一个值,如果没有声明,直接赋值的话,在非严格模式下,会认为成是全局变量,在严格模式下会 报错
//同时声明和赋值
var b = 2;
//没有声明,直接复制
c = 3; //不管在哪里定义,都会认为是全局变量,在严格模式报错,所以不建议这样做一条语句声明多个变量同时为各自赋值
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
//一次性声明多个变量,并且赋值
var a1 = 'qingzhui', a2 = 5, a3 = 6;如果一个变量只是声明,没有赋值的话,其默认值是undefined
//只是声明一个变量,并没有赋值
var f;
console.log(f); //undefined当一个变量既没有声明也没有赋值,就会报错
//打印一个没有赋值的变量
console.log(eee); //ReferenceError: eee is not defined同一个变量只能声明一次
var g = 5;
var g; //无效
console.log(g); //5同一个变量,可以被多次赋值
var h = 5;
h = 'qingzhui';
console.log(h) //'qingzhui'变量是用来存储数据的,所以变量赋值的过程是返回一个值的过程。
var i;
console.log(i = 3); //3可以连续赋值
var j = 4;
var k = j;
console.log(j); //4
console.log(k); //4
//上面的可以理解为 var j, k = j = 4;var l = m, m = 6;
console.log(l); //undefined
console.log(m); //6var l = m = 6;
console.log(l); //6
console.log(m); //6var x = 0;
function f(){
var x = y = 1; // x在函数内部声明,y不是!
}
f();
console.log(x, y); // 0, 1
// x是全局变量。
// y是隐式声明的全局变量。var a = {n:1};
a.x = a = {n:2};
alert(a.x); // --> undefined
var a = {n:1};
a = {n:2}; //新的a
a.x = {n:2}; //旧的a
alert(a.x); //新的a在编程语言当中,作用域控制着变量与参数的可见性及生命周期。对于程序来说是一个非常实用的功能,它减少了名称冲突,并且提供了自动内存管理,提升性能。
声明变量在任何代码执行前创建,而非声明变量只有在执行赋值操作的时候才会被创建。
console.log(a); //undefined
var a = 4;
console.log(a); //4, 赋值的过程console.log(a); //报错
a = 4;更新时间:2015.10.06 状态: 编辑(修订中)