今天翻看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/
转载时须注明出处及本声明