初步
-
Js是轻量级解释性语言,编译过程发生在代码运行中,从上往下的顺序执行代码
-
脚本调用策略
<script src="XXX" ></script>
在该情况下,外部的js会被立即执行,立即指的是后面元素渲染文档加载停止,等到js加载完成后才继续执行
- 应用程序接口(Application Programming Interfaces(API)
预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
分类:浏览器 API(DOM API) ,第三方API
- 服务端代码与客户端代码
-
客户端代码是在用户的电脑上运行的代码,在浏览一个网页时,它的客户端代码就会被下载,然后由浏览器来运行并展示。这就是客户端 JavaScript
-
服务器端代码在服务器上运行,接着运行结果才由浏览器下载并展示出来JavaScript 也可用作服务器端语言
- async和defer
- async
加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行。不因为加载脚本而阻塞页面的加载。一旦加载到就会立刻执行.
存在多个 async 的时候,它们之间的执行顺序也不确定,完全依赖于网络传输结果,谁先到执行谁
如果脚本并不关心页面中的DOM元素(文档是否解析完毕),并且也不会产生其他脚本需要的数据,使用async是最理想的选择
- defer
会在html页面解析完毕之后再去执行,也就是类似于把这个script放在了页面底部,
当有多个 defer 属性的脚本时,将按照在页面中出现的顺序加载
- 语句块:js是块作用域
常见错误
-
expected expression,got 'string'缺少前端引号
-
unterminated string literal 缺少后端引号
异常处理
可以用 throw 语句抛出一个异常并且用 try...catch 语句捕获处理它,
一条或者多条语句的 try 代码块,0 个或 1 个的catch代码块,catch 代码块中的语句会在 try 代码块中抛出异常时执行,finally作为
try-catch-finally流程的返回值,不管在try和catch块中语句返回了什么
finally:
该值会是最终整个流程的返回值;
function f() {
try {
console.log(0);
throw "bogus";
} catch(e) {
console.log(1);
return true;
console.log(2); // not reachable
} finally {
console.log(3);
return false;
console.log(4); // not reachable
}
返回值也适用于在catch块内抛出或重新抛出的异常