Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“delete window.eval”的浏览器JavaScript含义?_Javascript_Browser_Eval - Fatal编程技术网

“delete window.eval”的浏览器JavaScript含义?

“delete window.eval”的浏览器JavaScript含义?,javascript,browser,eval,Javascript,Browser,Eval,在浏览器中,eval的JavaScript用法经常被认为是“邪恶的”。Nicholas C.Zakas提出了这一观点,并涵盖了可调试性、性能和安全性主题。Google Chrome文档提到默认策略禁用eval,并要求您添加'safe-eval'以重新启用 作为一个测试用例,我从ChromeDeveloperToolsJavaScript控制台运行了以下内容。查看当我删除window.eval时会发生什么 > eval("1+1") 2 > window.eval("1+1")

在浏览器中,
eval
的JavaScript用法经常被认为是“邪恶的”。Nicholas C.Zakas提出了这一观点,并涵盖了可调试性、性能和安全性主题。Google Chrome文档提到默认策略禁用
eval
,并要求您添加
'safe-eval'
以重新启用

作为一个测试用例,我从ChromeDeveloperToolsJavaScript控制台运行了以下内容。查看当我
删除window.eval时会发生什么

> eval("1+1")
  2
> window.eval("1+1")
  2
> delete window.eval
  true
> eval("1+1")
  ReferenceError: eval is not defined
> window.eval("1+1")
  TypeError: undefined is not a function

除了可能增强安全性和破坏依赖于
eval
的第三方代码之外,执行
delete window.eval
的其他含义是什么?

我知道jQuery在内部使用
eval
,但你说的不是第三方代码。扎卡斯先生正确地认为
eval()
不是邪恶的。是否所有浏览器都允许您删除
window.eval
?在我的IE11副本中,它似乎破坏了控制台。为什么要删除
eval()
?既然这样做的脚本只会影响当前页面,为什么您认为这样做可以增强安全性?@nnnnnn-Chrome允许您删除它,即使是在安全模式下:
(function(){“use strict”;delete window.eval;console.log(typeof window.eval);console.log(window.eval)})如果您选择,有很多方法可以破坏您的浏览器。我不太明白破坏你自己的页面是如何提供安全性的。此外,除了eval()之外,还有其他几种方法可以将字符串作为代码运行。在“严格使用”中,您可以使eval()安全:您仍然需要禁用的是函数()。不要断言这是一个好主意,只是注意到内容安全策略可以防止eval,所以请调查删除eval对相同最终结果的影响。