读书人

javascript 关于宣言变量的细节

发布时间: 2012-10-08 19:54:56 作者: rapoo

javascript 关于声明变量的细节

对与刚接触javascript的童鞋来说,尤其是学过java的同学,一时半会还需要对javascript的语法格式需要一段时间的适应。

以下内容只是鄙人的一些粗浅总结,希望看过的觉的不足之处可与我探讨,我会通过与java语言的对比,加深对javascript的理解和学习,相信会有所裨益。

?

关于javascript的变量声明

?

首先,java变量的声明,是需要同时声明变量类型的,而javascript与java最只要的一个区别是:untype(非类型),也就是什么变量都能装。一个javascript变量,你可以先赋值数字,然后再赋值一个字符串,这是完全合法的,不管何种类型的变量(数字,Array,对象,String)统一用 var标识符进行声明。

?

function test(o){   var i = 0;   if(typeof o == "object"){       var j = 0;       for(var k = 0; k < 10; k++){            document.write(k);       }       document.write(k);    }     document.write(j); }

?

如果上面是一段java代码,红色标识的代码,那么编译不会通过,system.out.print(k);k一定没有声明,在java语法中k的作用域只在for循环语句中,for循环结束,那么k的生命周期也就结束。同理j也一样,它的生命周期只在if语句块中。但是在javascript中,这是合法的。比较容易让人难以理解,记下来就好,千万别和java搞混。

?

未定义的变量和未赋值的变量

在js开发中,在读取或引用某些变量时总会发生一些莫名其妙的状况,多数问题是因为某些变量没有定义或者赋值,也或许是因为经常将未赋值和未定义的变量弄混,以至于不能很好的控制这两种不同类型的未定义变量。

?

第一种,前面说过,为未经过声明的变量赋值,程序会隐式的在全局作用域中声明成全局变量。

第二种,是已经声明了,但是永远都不会被赋值的变量,如果要读取这样的变量的值,将会得到一个默认值undefind,前面也说过。

最后,undefind 和java中的null是不一样的,javascript中也有null这个值。

读书人网 >JavaScript

热点推荐