//变量声明提升规则
var my_var = 'this is my value';
(function(){
alert(my_var);//输出undefined
var my_var = 'local value';
})()
javascript
解决方案 »
- 想通过js自动提交表单,但是却不执行Onsubmit的事件,怎么办?
- 如何捕获鼠标在iframe里?
- 新手加入,望大家多多指导
- 一个setTimeout有问题
- 求助:这个错误该怎么解决
- 为什么没有onfocus, onclick也能改变输入框颜色呢?
- 谁帮我写个加密和解密的函数?
- 如何用javascript/asp/php获取客户端.net框架安装版本号
- php 里写的javascript小问题。在线等待——————————————————————
- 帮忙!比较棘手的两个问题!
- iframe里怎么获取点击事件
- 点击空白地方 只能实现一个DIV隐藏 第二个DIV就不能隐藏了 怎么才能实现两个div都隐藏
var my_var = "this is my value";
(function(my_var){
alert(my_var);//输出undefined
var my_var = 'local value';
})(my_var)试下这个
var my_var = 'this is my value';
(function(){
alert(my_var);//输出undefined
//var my_var = 'local value';
})()真要实现让它不输出undefined有大把的方法,只是想知道它执行的原理而已。
var my_var = "this is my value";
(function(my_var){
var my_var;
alert(my_var);//输出undefined
my_var = 'local value';
})()
由此想到,由于变量声明提升规则,代码就如以上般执行。
alert(my_var1);//输出undefined
var my_var = 'local value';
})(my_var2)
就相当于
function(){
var my_var1 = my_var2;
alert(my_var1);//输出undefined
var my_var = 'local value';
})()
贵兄思维真乱,我这代码本意就不重在闭包;而且这段代码中的函数完全可以访问全局变量。请本地测试后再回答。
因为你函数内的局部变量覆盖了全局变量,就如上所说全局变量变成局部变量,而在alert的时候该变量并未赋值,因此需要将外部变量传进匿名函数内