eval()和附加脚本标记之间的Javascript差异

Oli*_*ver 8 javascript ajax jquery eval

我想知道是否有人可以解释使用Javascript的eval()和另一种方法之间的区别,比如使用JQuery创建脚本标记然后将该元素附加到页面:

eval(somecode);
Run Code Online (Sandbox Code Playgroud)

$("<script type='text/javascript'>"+somecode+"</script>").appendTo("head");
Run Code Online (Sandbox Code Playgroud)

不确定这是否相关,但这里是上下文:我正在使用Drupal Popups模块的一个版本,其基本目的是通过AJAX整个页面请求轻松将常规链接转换为弹出窗口并将其附加到页面中一个模态窗口.这通常包括外部CSS和Javascript文件.为了提高所有这些AJAX加载的性能,我转而使用AJAX排队,并将外部脚本的eval()更改为列出的替代方案.但是,这会在其他各个页面上引发零星的Javscript错误.

Jos*_*ell 2

其中之一(就差异而言)是eval返回表达式的结果。

var result = eval('3+4'); // result = 7 
Run Code Online (Sandbox Code Playgroud)

只要您的 javascript 字符串位于脚本块的结构中,我建议将其注入脚本标签/

  • 更精确地。`eval()` 返回最后一个表达式的计算结果,而脚本标签不能返回任何内容。 (7认同)