這樣,如果我做了一個功能:禁用視圖代碼
function a() {
alert("Hello!")
}
我不希望你能夠查看代碼,如:
eval(a)
返回所有代碼但
eval(a())
返回警報
當做eval(a)我希望它不返回代碼,只是沒有如何?
這樣,如果我做了一個功能:禁用視圖代碼
function a() {
alert("Hello!")
}
我不希望你能夠查看代碼,如:
eval(a)
返回所有代碼但
eval(a())
返回警報
當做eval(a)我希望它不返回代碼,只是沒有如何?
始終封裝你的代碼在IIFE(立即調用函數表達式),所以你不漏變量全局範圍:
(function(){
function a() {
alert("Hello!")
}
// more stuff...
}());
console.log(eval(a)); //=> Uncaught ReferenceError: a is not defined
你也可以使用一個小技巧地掩飾bind
功能代碼:
var a = function a() {
alert("Hello!")
}.bind();
console.log(eval(a)); //=> function() { [native code] }
每當你想使用eval
,三思而後行,有可能是一個更好的方式來做到這一點。 如果你只是想運行該功能,只需做a()
。那裏不需要eval
。
buton then eval(a())不起作用? – 2013-04-04 07:10:23
作爲提示,你可能不應該使用'eval' ...儘可能避免。你想做什麼? – elclanrs 2013-04-04 07:11:04
正是我想要的與本機代碼 – 2013-04-04 07:16:58
你不能隱藏ECMAscript代碼,不是這樣,不能。您可以uglify和混淆代碼,這也很容易得到恢復。 – jAndy 2013-04-04 07:08:27
是的,但它是一個計算器,所以它看起來有點瘋狂 – 2013-04-04 07:09:03