And*_*rea 2 javascript hoisting
有没有办法在不同文件中的源代码之间进行函数和变量提升?也就是说,像
//Inside firstfile.js
foo === "bar" //should return true
Run Code Online (Sandbox Code Playgroud)
和
//Inside secondfile.js
function bar() {
this.foo = "bar";
}
Run Code Online (Sandbox Code Playgroud)
我想这是不可能的,因为大多数 javascript 引擎会按顺序解析和执行不同的文件,但我不确定。
我不知道这是否在 ECMA 的规范中,因为解析不同的文件并不是语言的真正组成部分。
我最初认为这是一个比实际看起来更有趣的问题。我认为这个问题的答案是每个<script>元素代表一个单独的Program,每个单独的 Program 在下一个 Program 发生任何事情之前被解析和(至关重要)执行,因此提升的效果只能在单个 Program 中看到。
例如,在单个脚本中:
<script type="text/javasscript">
alert(typeof foo);
function foo() {}
</script>
Run Code Online (Sandbox Code Playgroud)
... 警告“函数”,因为函数声明被提升,但将这两行拆分为单独的<script>元素会改变这一点:
<script type="text/javasscript">
alert(typeof foo);
</script>
<script type="text/javasscript">
function foo() {}
</script>
Run Code Online (Sandbox Code Playgroud)
... 警告“未定义”,因为第一个脚本在第二个脚本被解析之前执行。
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |