变量函数声明问题
a,b,c输出是什么?
var a;
console.log(a);
a = 1;
undefined
最后的结果是显示undefined,表示变量a已声明,但还未赋值。
console.log(a);
console.log(b);
var a = 1;
上面的语句将会报错,提示“ReferenceError: b is not defined”,即变量b未声明,这是因为b不是用var命令声明的,JavaScript引擎不会将其提升,而只是视为对顶层对象的b属性的赋值。
var a, b, c;
alert(a);
alert(b);
alert(c);
a = 1;
b = 1;
c = 1;
undefined undefined undefined
var a, b, c;
a();
b();
c();
a=function(){
alert('123');
}
b=function(){
alert('456');
}
c=function(){
alert('789');
}
image.png
和变量的声明会前置一样,函数声明同样会前置,如果我们使用函数表达式那么规则和变量一样
var a, b, c;
a();
b();
c();
function a(){
alert('123');
}
function b(){
alert('456');
}
function c(){
alert( '789');
}
如果我们使用函数声明的方式,那么即使函数写在最后也可以在前面语句调用,前提是函数声明部分已经被下载到本地
总结 js代码从上到下按代码块来进行预处理的执行
src属性
带有src属性的<script>元素不应该在其<script></script>标签之间添加额外内容,否则只会下载并执行外部脚本文件。,被嵌入的内容会被忽略。
<script>顺序
一般情况把.js文件放在</body>之前
如果执行的东西要在渲染之前,那就放<head>中
网友评论