1. 什么是javascript?
javascript是一门运行在客户端(浏览器)的脚本语言。(如不清楚脚本语言的特点,可自行百度了解一下,这里不再赘述)
2. javascript有什么用?
jsvascript的作用:我们通过编写javascript代码可以为网页添加很多交互效果,还可以通过 javascript代码发起ajax网络请求,与服务器的接口进行交互,执行获取服务器的数据,向服务器提交数据等操作;除了小部分比较简单的展示型网站,其他90%以上的网站都离不开javascript代码。
3. javascript代码是怎么运行的呢?
javascript代码由浏览器中专门的js引擎来解析和执行。(javascript简称js,接下来的文章中将用js来代指javascript)
3.1 js引擎运行js代码的步骤
js引擎执行js代码大致可分为预解析和执行两步:
1. 预解析会进行变量提升和函数提升
变量提升:会把变量声明提升到当前作用域的最前面,但不执行赋值操作
函数提升:会把函数声明提升到当前作用域的最前面,但不调用函数
2. 代码执行
按照提升后的代码顺序一步一步执行即可
PS:(关于js引擎执行js代码的步骤,如果您是刚学js的话,先知道js代码是由浏览器的js引擎来解析并执行的即可;等您学完js中的变量,函数,作用域等概念,自然就会理解此处的预解析机制,3.2的案例您也可以先跳过,等学完变量,函数,作用域之后再来看)
3.2 关于js预解析的案例
// 预解析案例
f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
上方代码执行的结果是:9,9,9,9,9,报错
上述代码执行过程为:先进行f1()函数声明的提升,然后对于 var a = b = c = 9;相当于var a = 9; b = 9; c = 9; 其中因为 b 和 c 没有 var 的声明,所以 b 和 c 是全局变量。
所以外部的代码可以访问到 b 和 c ,访问不到 a,这就是报错的由来。
执行上述代码就相当于执行如下代码:
// 预解析案例
function f1(){
var a = 9;
b = 9;
c = 9;
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
从以上代码也可以看出来,最后的输出是在外部对变量a的输出,又因为a的作用域只在f1函数内部,所以输出a的时候报错了。
下面这个链接是本账号发布的前端相关内容的总结笔记。欢迎大家下载!