javascript 函数在函数所在的script标签下为啥不能被调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 函数在函数所在的script标签下为啥不能被调用相关的知识,希望对你有一定的参考价值。

新手求前辈们指教

这么给你说吧 <script></script>标签 在规范情况下可以在head内 可以在body内

但是在其他地方是不符合规范的 至于不符合规范的情况下会出什么问题 是不定的

但是还有个情况 你放在了head内会不执行 因为JS代码先于dom执行了

所以建议 将script标签 放在body内部 html标签下

比如

<body>
<p>dfdf</p>
<script></script>
</body>

对了 我打了这么多字包括昨天的 你给我加分啊- -

参考技术A 这里跟javascript标签放在哪里没有太大区别,主要还是因为第一个你那里加了src,那么它就会自动执行src里面引入的js程序,而忽略JavaScript标签内部的程序(其实就是变成了引入外部js文件了,而不是作为JavaScript标签来解析它包裹的内部代码了)。 参考技术B 有src,只执行src中的js脚本、

JavaScript之预解析

<script>
/** 预解析:提前解析代码
*
* 预解析做什么事?
* 把变量的声明提前了(但赋值不会提前),提前到当前所在作用域的最上面
* 函数的声明也会被提前,提前到当前所在作用域的最上面
*
* 预解析会分段(多对script标签中的函数重名,预解析的时候不会冲突)
*
* 先提前var,在提前function
*/

//把变量的声明提前了
console.log(num);//没有报错--undefined
var num=20;

f1();
function f1()
console.log("哈哈哈哈");


f2();
var num1=20;
function f2()
console.log(num1); //结果是undefined 不是20
var num1=10;


f3();
var num2=20;
function f3()
console.log(num2); //结果是undefined 因为预解析将函数f3和变量num2(但没有赋值)的定义提前


var num3=20;
function f4()
console.log(num3); //结果是20

f4();
</script>

以上是关于javascript 函数在函数所在的script标签下为啥不能被调用的主要内容,如果未能解决你的问题,请参考以下文章

js setTimeout如何调用自身所在的函数(有参数传递的)?

Javascript的函数定义在一个script标记对中,能不能在另一个script中调用?

如何在script函数中数据调用后台的方法

JavaScript函数调用

JavaScript 习惯用法:创建一个函数只是为了调用它

JavaScript函数表达式