有这么个情况,看代码
<html>
<body>
<script>
var mmBase = ':(';
function readcv(){
var mmBase = ':)';
function read(v){
//除了用eval能得到上级局部域的值(笑脸),还有啥方法?
//return eval('mm'+v);
}
alert(read('Base'));
}
readcv();
</script>
</body>
</html>根据串找出相应局部变量的值,除了用eval,还有啥好方法没?
因为改的是别人的代码,服务器代码生成的js代码,mm开头的变量定义很多,不想也不敢把变量提到window域。
<html>
<body>
<script>
var mmBase = ':(';
function readcv(){
var mmBase = ':)';
function read(v){
//除了用eval能得到上级局部域的值(笑脸),还有啥方法?
//return eval('mm'+v);
}
alert(read('Base'));
}
readcv();
</script>
</body>
</html>根据串找出相应局部变量的值,除了用eval,还有啥好方法没?
因为改的是别人的代码,服务器代码生成的js代码,mm开头的变量定义很多,不想也不敢把变量提到window域。
var mmBase = ':(';
function readcv(){
var mmBase = ':)';
function read(v){
//除了用eval能得到上级局部域的值(笑脸),还有啥方法?
return {
'mmBase':mmBase
}['mm'+v]
}
alert(read('Base'));
}
readcv();
</script>
如果这样我还是eval算了。
不过你的思路是没错的。
也能节省好多没必要的开销。
如果这样的话,我觉得你还是用eval好~·
也能节省好多没必要的开销。
<html>
<body>
<script>
var mmBase = ':(';
function readcv(){
var mmBase = ':)';
function read(v){
//除了用eval能得到上级局部域的值(笑脸),还有啥方法?
return Function('return mm' + v)();
}
alert(read('Base'));
}
readcv();
</script>
</body>
</html>