码迷,mamicode.com
首页 > Web开发 > 详细

JS_变量

时间:2016-01-06 00:02:28      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

1.js是untyped的语言,或者说弱类型的,不想c#,java这些强类型语言,定义变量必须明确变量类型为string ,int ,bool(当然c#支持var,但编译器已经处理变量为对应的类型了,与js不一样),js定义所有变量都是用var,而后可以随意修改变量值,如下代码:

1 var i = 23;//number
2 i = "hello";//string
3 i = true;//boolean
4 alert(i);//true

2.变量的种类:全局变量  局部变量

如果变量定义不用var声明,则该变量为全局变量,但这可能会与预期不一致,一个好的习惯就是,定义所有变量都用var;

如果局部变量与全局变量名称一致,则在局部变量的作用范围内局部变量会覆盖全局变量的值:

1 var v = "global";
2 function test1() {
3     var v = "local";
4     alert(v);
5 }
6
7 test1();//local

3.作用范围
global变量作用范围为整个js文件,而local变量范围为定义其变量所在的代码块(如:function,loop,function中的params),有种情况特别注意:局部变量的生效范围是贯穿其作用域始终的,而不是自其定义出开始生效,如下代码:

1 var v2 = "global";
2 function test2() {
3     alert(v2);//undefined
4     var v2 = "local";
5     alert(v2);//local
6 }
7 test2();

尽管v2变量在function外部已经定义,但由于test2()内部有定义v2,所以在test2()的v2是与外部无关的,只是第一次alert时,其变量尚未初始化,为undefined,之后赋值变为local,因此另一个建议:function中的变量定义最好都放在function最开始处。再如下例,局部变量的作用范围是不限代码块的(for循环、if语句):

 1 function test3(x) {
 2     if (typeof x == "object") {
 3         var t = 1;
 4         function subTest3() {
 5             for (var i = 0; i < 10; i++) {
 6                 //do nothing
 7             }
 8             alert(i);//9 i is defined everywhere,not only loop.
 9         }
10         subTest3();
11     }
12     alert(t);//1 t is defined everywhere,not only block.
13 }
14 
15 test3({ name: "wang" });//test the function test3() with an object param.

 

4.变量类型的相互转化

之前有提到过,js中类型的转换是根据需要默认转的,如:var s="hello"; s=s+22; 自动将22转换成string类型,拼接成hello22,不多说

5.值类型与引用类型

js中的类型分两类:primitive类型--int,boolean,null,undefined,值在内存中所占大小固定不变,为值类型

         function,arrary,function,在内存中大小不固定,为引用类型

         至于string,算是特殊类型吧,尽管在内存中大小不定(string长度不定),但string是固定不变的,讨论其是值类型还是引用类型是无意义的(moot),就当是个独特的存在吧

1 var a = 11;
2 var b = a;
3 a = "hello";
4 alert(b);//11 b没有变,因为b,a是两个独立值
5 
6 var a = new Array(1, 2, 3, 4);
7 var b = a;
8 b[0] = "yes";
9 alert(a);//yes,2,3,4 array是引用类型,a,b指向同一array

 

JS_变量

标签:

原文地址:http://www.cnblogs.com/baweier2013/p/5103928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!