《JavaScript 高级程序设计》第一、二章笔记

261 阅读1分钟

JavaScript

一、javaScript是一门用来跟网页交互的脚本语言

包含三部分

ECMAscript(核心):从语法、类型、语句、关键字、保留字、操作符、全局对象等对语言的规范描述。

      es6 是2015年就出了的

文档对象模型(DOM):将网页抽象成一组分层节点,使用DOM api可以对网页进行增删改查。  W3C制定DOM标准

浏览器对象模型(BOM):使用BOM api可以操作和访问浏览器的窗口。

二、HTML中的JavaScript

2.1、<script> 的8个属性

async: 仅对外部脚本文件有效

charset: 时常被忽略

crossorigin: crossorigin="anoymous"表示不必设置凭据标志,如果是“use-credentials"则需要设置凭据。

defer: 可选,延迟到文本完全被解析和显示之后再执行。仅对外部文件脚本文件有效

integrity:验证接收到的资源和指定的加密签名,不匹配,页面报错且脚本不执行。可以避免恶意内容

langauge:废弃

src: 执行代码的外部文件。

type: 脚本语言的内容类型。MIME 一般是”text/javascript", javaScript文件的MIME类型通常是“application/x-javascript”

2.2、注意事项

使用了src的<script>不应再在<script>和</script>中包含其他JavaScript代码,都提供,也只会执行外部脚本文件。

同源策略限制:get请求获取外部脚本文件不受该限制,但返回并被执行的javascript则受限制。

不带defer和async属性的<script>严格按顺序依次执行。

2.3、杂项

a. <script>元素一般是在<html><head></head><body><script></script></body></html> body标签里。

b. <script defer src="exmaple.js"></script> 多个defer 推迟的脚本不一定总会按顺序执行或者在DOMContentLoaded事件之前执行。建议只保留一个这样的脚本

c. <script async src="exmaple.js"></script> 不必等脚本下载或者执行完再加载页面,异步脚本不应在加载期间修改DOM。

d. 动态加载脚本

let script = document.createElement("script");
script.src = "xxx.js"
document.head.appendChild(script);

一般来说这种是异步加载的,async,但是有些浏览器不支持,所以可以明确将其改成非async(script.async = false;)

这种对浏览器预加载器是不可见的,会影响性能,所以我们让他知晓,可以文档显式声明。

<link rel="preload" href="xxx.js"> 

e. 文档模式

BackCompat就是混杂模式或者怪异模式,浏览器按照自己的方式解析html。

CSS1Compat就是含有的模式,标准模式解析。

f. <noscript>元素

不支持javascript脚本的早期浏览器或者浏览器的脚本支持被关闭时可以使用。