假设我有一个js文件和一个html文件:
jScript1.js
var a = 0.05 ;
var var1 = a;
function myFunc1(){
console.log("original"+ a);
a = a*5 ;
console.log("processed a"+ a) ;
var1 = a;
}
的index.html
<body>
<script src="jScript1.js">myFunc1();</script>
<script>
console.log("display"+ a);
</script>
</body>
我能够在js文件中访问var1但是当我使用它时,我得到初始化值[在这种情况下为0.05]而不是在使用js调用脚本标记中的myFunc()之后存储在var1中的处理值文件作为脚本资源
如何在myFunc()内部进行处理后获取html文件中var1的最终值?
答案 0 :(得分:1)
规范的相关摘录(我特别从https://dev.w3.org/html5/spec-preview/the-script-element.html获取):
当用于包含动态脚本时,脚本可以嵌入内嵌,也可以使用src属性从外部文件导入。
[...]
(步骤15.)
[...]
如果元素具有src属性
必须将该元素添加到脚本集中,这些脚本将在准备脚本算法开始时尽快执行脚本元素的Document。 [...],否则强>
即使其他脚本已在执行,用户代理也必须立即执行脚本块。
我不确定它是如何被忽视的,但是myFunc1();
调用根本没有被执行,并且它的日志根本不会出现。
如果你试试
<body>
<script src="jScript1.js"></script>
<script>
console.log("display1 " + a);
myFunc1();
console.log("display2 " + a);
</script>
</body>
相反,这将起作用。
(虽然符号&#39;动态脚本&#39;可能看起来有点令人困惑,但另一种选择是&#39;数据块&#39;)