javascript - 不完整的可执行自加载闭包

标签 javascript closures dynamic-script-loading

浏览器/ajax/javascript是否可以自动完成,并关闭自加载闭包(如果它们保持打开状态..)?

1 (function()
2 {
3 function a(n){this.name=n;}
4 var a=this;
5 //more code in here
6 alert(a);
7 //})();


- The terminating brace and parens were not present in the script i saw
- Is it possible that it must be generated dynamically, so that the .js file
- does not contain it but the script/ajax later appends it ..?
- Can the browser complete it..?

最佳答案

为什么不运行一些简单的测试呢?

使用一些像这样的文件:

<script>
(function a () {
    alert('a');
</script>
<script>
$(function() { alert('b'); a(); });
</script>

这将告诉您以下场景:

  1. alerts ('a'),alerts('b'),alerts('a') ==>(不太可能):浏览器完成函数定义并编写闭包执行括号

  2. alerts('b'),alerts('a') ==> 浏览器完成函数定义并且调用按预期进行

  3. alerts('b'),未定义的 a() 引发错误 ==> 浏览器忽略不完整的函数定义

  4. 什么都不做==>浏览器在找不到右大括号后退出解析

我认为浏览器不太可能添加闭包的执行部分,但不太可能添加缺少的结尾}。尽管这绝对不是您想要依赖的行为,并且应该始终很好地形成您的脚本文件。

关于javascript - 不完整的可执行自加载闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566890/

相关文章:

javascript - 如何更改JS中的 boolean 值?

javascript - Require.js——如何相对于模块目录加载

javascript - Each() div 有两个类,如果这个 div 有 child ,则添加 css

javascript - 在没有内联事件的情况下调用 javascript 函数

C++闭包创建

groovy - 使用收集闭包方法在 groovy 中填充 HashMap

通过 appendChild 添加的 Javascripts 似乎没有运行

javascript - 使用脚本加载器注入(inject)脚本访问全局变量

Javascript promise 及其参数

JavaScript 关闭错误