今天翻看JS代码时候遇到以下一段,感觉有点意思,思考一番记录下来,以便日后学习。
var mt = false;
function change(a) {
eval(`${a} = ${a} ? false: true`);
if (a == 'mt') {
eval(a) ? method1() :method2();
}
}
change('mt');
- 首先执行change方法,传入参数
mt
,此时第一句eval("${a} = ${a} ? false: true");
相当于mt = mt ? false: true
。因为开头var mt = false
,所以第一句执行下来,此时mt = true
。 - 因为传入参数
mt
,所以此时a == 'mt'
成立。eval(a) ? method1() :method2();
相当于mt ? method1() :method2();
,因为此时mt = true
,所以最后执行method1()。
这段代码巧妙的运用的eval()
函数:
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
W3school :JavaScript eval() 函数
版权属于:版权归本子所有,转载时须注明出处及本声明
本文链接:https://benzina.cn/archives/44/
所有原创文章采用【知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议】,转载前请保证理解此协议。