我想将字符串转换为变量:
var abc='b';
var b=5;
console.log(window[abc]);
在js中,上面是正常的。当使用jquery时:
$(document).ready(function(){
var abc='b';
var b=5;
console.log(window[abc]);
});
show未定义,所以,我怎么写?在第二个示例中,通过全局对象获得5。
答案 0 :(得分:0)
一切都与范围有关。
var b = 5;
仅存在于函数(){...}的范围内,但您试图在窗口范围内查找它。
试试这个:
console.log(eval(abc))
或者,将b指定为某个临时对象的键:
$(document).ready(function(){
var scope = {};
scope.abc = 'b';
scope.b = 5;
console.log(scope[scope.abc])
});
<强>更新强>
如果您想使用本地范围,只需将“scope”替换为“this”:
$(document).ready(function(){
this.abc = 'b';
this.b = 5;
console.log(this[this.abc])
});
答案 1 :(得分:0)
var abc
在函数中定义。所以它是一个'本地'变量,不在window
对象中。只需使用console.log(abc)
即可。在您的第一个示例中,console.log(abc)
也可以使用。
答案 2 :(得分:0)
快速举例:
$(document).ready(function(){
var abc = 'b';
this.b = 5;
console.log(this[abc]);
});