我需要传递一个变量取决于if,我写了这段代码
var firstFoo = 2;
$('div').click(function() {
if(firstFoo == 1){
var
var1 = 'var1',
var2 = 'var2',
var3 = 'var3';
}
else{
var
var1 = 'no var1',
var2 = 'no var2',
var3 = 'no var3';
}
$('<span></span>',{
'data-var1': var1,
'data-var2': var2,
'data-var3': var3
}).insertAfter(this);
});
代码运行良好,参见 jsfiddle 上的示例 http://jsfiddle.net/Xn7xG/
但是当我点击 JSHint 时出现错误
(变量已经定义)&(变量超出范围使用)
我不知道这是否意味着我的代码无法在所有浏览器和情况下正常工作
上面这段代码的正确写法是什么?
最佳答案
在 javascript 中没有 block 作用域的概念,所有变量都将在各自的函数作用域/全局作用域中声明。
在您的情况下,您在同一功能范围内两次声明相同的变量,这就是警告的原因....即使您在页面底部声明了一个变量,它的范围也将是整个页面因为Hoisting还有this
var firstFoo = 2;
$('div').click(function () {
var var1, var2, var3;
if (firstFoo == 1) {
var1 = 'var1';
var2 = 'var2';
var3 = 'var3';
} else {
var1 = 'no var1';
var2 = 'no var2';
var3 = 'no var3';
}
$('<span></span>', {
'data-var1': var1,
'data-var2': var2,
'data-var3': var3
}).insertAfter(this);
});
关于javascript - 在 if 中重新定义变量并像 php 一样在外部使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19027550/