论坛首页 Web前端技术论坛

Js 的undefined

浏览 11652 次
锁定老帖子 主题:Js 的undefined
精华帖 (0) :: 良好帖 (4) :: 新手帖 (1) :: 隐藏帖 (22)
作者 正文
   发表时间:2009-07-24   最后修改:2009-07-24
var scope = "global";
function f() {
	alert(scope);  
	var scope = "local"; 
	alert(scope); 
}
f();



你可能认为第一次调用alert的值是global因为局部变量scope还未执行.

但是由于变量作用域的机制结果出人意料

局部变量scope在函数f中定义这意味着与之同名的全局变量scope将会被隐藏
虽然局部变量已定义但是真正的初始化将在var scope之后

也就是正如以下代码

function f() {
    var scope;  
    alert(scope);  
    scope = "local";  
    alert(scope); 
}


有此可见局部变量的声明将被解析器移至函数的入口处

此例说明了一个好的编程习惯将所有局部变量声明在函数的开头这样自己清楚别人也不会误会了
0 请登录后投票
   发表时间:2009-07-27   最后修改:2009-07-27
例子没什么实际的作用,但是通过这个例子,可以弄懂JavaScript变量作用域的问题。不清楚为什么这么多人投隐藏啊,例子还是不错的,不过ms,标题和代码要说明的问题没什么关系,,
0 请登录后投票
   发表时间:2009-07-30  
nickevin 写道
var scope = "global";
function f() {
	alert(scope);  
	var scope = "local"; 
	alert(scope); 
}
f();



你可能认为第一次调用alert的值是global因为局部变量scope还未执行.

但是由于变量作用域的机制结果出人意料

局部变量scope在函数f中定义这意味着与之同名的全局变量scope将会被隐藏
虽然局部变量已定义但是真正的初始化将在var scope之后

也就是正如以下代码

function f() {
    var scope;  
    alert(scope);  
    scope = "local";  
    alert(scope); 
}


有此可见局部变量的声明将被解析器移至函数的入口处

此例说明了一个好的编程习惯将所有局部变量声明在函数的开头这样自己清楚别人也不会误会了

这个是不错的,函数的声明变量由于其特殊性,可以规定出了第一行以外,下面不许擅自声明任何变量
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics