在javascript中,只有前面的函数调用';在同一个脚本标记中定义的
//场景1在javascript中,只有前面的函数调用';在同一个脚本标记中定义的,javascript,Javascript,//场景1 <script> myFunction(); // This won't work. </script> <script> function myFunction() { alert("ok"); } </script> myFunction();//这行不通。 函数myFunction(){ 警报(“正常”); } //场景2 <script> myFunction(); // This will wor
<script>
myFunction(); // This won't work.
</script>
<script>
function myFunction() {
alert("ok");
}
</script>
myFunction();//这行不通。
函数myFunction(){
警报(“正常”);
}
//场景2
<script>
myFunction(); // This will work.
function myFunction() {
alert("ok");
}
</script>
myFunction();//这会奏效的。
函数myFunction(){
警报(“正常”);
}
为什么??谢谢你的帮助 在JavaScript中,脚本按照它们在页面上出现的顺序加载,并被阻塞。因为您将它们放在单独的脚本标记中,所以它们是单独加载的。第一个被加载,方法在没有定义的情况下被执行。在第二个示例中,方法定义和调用同时加载,这意味着调用方法时方法确实存在。页面找到的每个脚本标记都将执行它 所以第一个脚本运行myFunction(),但它不在那里,错误 对于第二个,myFunction在那里,所以OK 但请注意,以下也是错误:
<script>
myFunction(); // error
var myFunction = function() {
alert("ok");
}
</script>
名为myFunction
的函数将在类似pre-process的过程中创建,这将完成一些初始工作。
然后是运行时,它处理
myFunction()
。现在,当调用它时,有一个名为的函数,没有问题。在考虑第二个脚本标记之前,将解析并执行整个第一个脚本标记。作为解析脚本的一部分,函数声明会提前被识别,这就是为什么第二个声明可以工作而第一个不能工作的原因
JavaScript:最终指南
出现在和标记之间的JavaScript语句按出现顺序执行;当一个文件中出现多个脚本时,脚本将按其出现的顺序执行。如果脚本调用document.write(),则传递给该方法的任何文本都会在结束标记之后立即插入到文档中,并在脚本完成运行时由HTML解析器进行解析。相同的规则适用于包含在具有src属性的单独文件中的脚本
Javascript是客户端剪切语言。当网页加载时,浏览器会检查网页中所有可用的syntex和函数
- 如果您在一个
标记内定义函数,并从另一个
标记调用函数,则浏览器将仅在第一个
标记内进行检查 - 如果您想从任何脚本标记调用函数,请将该函数放入js文件中,并在html页面中使用它
这意味着,如果函数在下面的脚本标记中定义(尚未处理)并在当前脚本标记中调用,则会发生“'function x'undefined”错误,因为js解释器还不知道它。但是,在给定的脚本标记中,可以在列表中的调用下面定义一个函数,其工作方式与在列表中定义的相同。js是客户端脚本,因此当加载页面时,它会执行。@SatishSharma:这完全是个混淆——无论如何,如果这是一个答案,请将其作为一个答案发布(注释不是为了回答问题)。场景1您正在调用一个函数,浏览器试图在脚本标记中获取函数声明,但它不在那里…因此在页面加载时出现错误。“当您使用var定义myFunction时,它现在是一个局部变量”.No,这里myFunction是一个全局变量。@user3184459。是的,因为这里它的局部作用域实际上是全局的,所以这里它实际上是一个全局变量。谢谢
<script>
myFunction(); // OK
function myFunction() {
alert("ok");
}
</script>