变量和数值相关,它储存了那个值,有了变量就可以储存操作数据了。
js与其他语言不同,它是非类型的。就是变量可以存放任何类型的值,而其他语言需要存放特定类型的值。
var i=5;
i="fdsfad";
这是合法的。
变量的声明一般是由VAR 关键字声明的
var i,sum; //一次声明两个变量, 若变量没有给定初始值,则值为“undefined”
在JS中多次声明同一个变量,是不会出错的,仅仅是给变量赋值的性质。
还有一种,不用var关键字声明变量,则JS会隐式的声明该变量,并且为全局变量。
变量的作用域:
分为全局变量和局部变量。
全局变量就是在整个JS代码中,处处都有其定义,处处都可以使用。
而局部变量,一般在一个函数体中定义,只能在函数体中局部使用,外部不可用,参数同样也是局部变量。
看到这里,我们更要注意变量的声明,如果在函数内部声明变量,不用关键字var ,它就是全局的变量,如果变量名与外部变量名一样,则修改其中的值
var s = "sssss"; function check() { // var s = "dddddd"; //加VAR 则是局部变量 对外部s影响 s = "dddddd"; //无VAR 则是全局变量,对外部全局变量S有影响 document.write(s + "<br>"); f = "fffffffff"; //全局变量 document.write(f+"<br>"); } check(); document.write(s + "<br>"); document.write(f); 输出:dddddd fffffffff dddddd fffffffff
这些是我们要注意的var声明的使用。
在JS中没有块级定义域。
就是说在函数中声明的所有变量,无论在哪里声明,在整个函数中都是有定义的。
function test(a) { var i = 0; if (a == 0) { var j = 0; for (var k = 0; k < 10; k++) { document.write(k); //0-9 } document.write(k); //10 } document.write(j); //0 } test(0);
var scop = "alls"; function test1() { alert(scop); //输出undefined var scop = "local"; alert(scop); //输出local } test1(); 由于局部变量在整个函数体内部 都是有定义的,意味着整个函数体中都隐藏了同名的全局变量,其实是与下面函数一样的。 var scop = "alls"; function test2() { var scop; alert(scop); //输出undefined scop = "local"; alert(scop); //输出local } test2();
这个我们要了解变量作用域,还有知道js函数中没有块级作用域