JAVAscript 第四版笔记
概述
JavaScript是一门用来与网页交互的脚本语言,包含以下三个组成部分。
- ECMAScript: 由 ECMA-262定义并提供核心功能。 (发音为“ek-ma-script”)
- 文档对象模型(DOM): 提供与网页内容交互的方法和接口。
- 浏览器对象模型(BOM): 提供与浏览器交互的方法和接口。
JavaScript的这三个部分得到了五大 Web浏览器(IE、Firefox、Chrome、Safari和 Opera)不同程度的支持。所有浏览器基本上对 ES5(ECMAScript 5)提供了完善的支持,而对 ES6(ECMAScript 6)和 ES7(ECMAScript 7)的支持度也在不断提升。这些浏览器对DOM的支持各不相同,但对 Level 3的支 持日益趋于规范。HTML5 中收录的 BOM 会因浏览器而异,不过开发者仍然可以假定存在很大一部分 公共特性。
< script >元素
type
MIME类型
默认text/javascript
。如果这个值是 module,则代 码会被当成 ES6模块,而且只有这时候代码中才能出现 import 和 export 关键字。
图片详细说明defer async module等区别
module类似于defer异步,并行加载,等html执行完再执行
module async异步加载,加载完立刻执行
crossorigin:
set CORS(跨源资源共享)
Orign:
1 protocol 2 domain 3 port
设置 凭据模式credentiais mode
(默认或者为空)值为ananymous表示不包含凭据(凭据cookie)
use-credentiais包含凭据(cookie、TSL证书、http认证信息,用来在服务端验证用户身份)
integrity:
可选.验证子资源完整性, 确保内容分发网络(CDN,Content Delivery Network)不会提 供恶意内容。
由连字符分割的两段字符串,分别是算法(如sha384)- 散列码(类似S5校验)
defer:
可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。 在 IE7及更早的版本中,对行内脚本也可以指定这个属性。
变量
作用域提升
var
function内变量var是局部变量,外部没法调用(这很正常,也很常见)
但是function内不使用var 则会变成全局,且可以用window使用
function(){
msg = ‘abv’
}
函数外部
msg
window.msg都可以用
var:重复声明不会报错(后声明的会覆盖前面声明的),全局声明的变量可以成为window对象的属性
let
块级作用域
if (true){
var tit = ‘123’
}
在var里是全局变量,在let里则不是全局变量,而仅仅在{}中括号中存在
没有提升域,有TDZ(Temporal Dead Zone)
不能重复声明
全局声明不是window变量 (是该页面的全局变量)
const
声明时要初始化,不能修改,
不能用于声明会自增的迭代变量
for(const i=0; i<5; i++)不可以
(for …of for …in可以)
for(const key in (a:1, b:2) ){}
for(const key of ‘abcde’){}
两种就可以
如果常量是一个对象
const obj = {a:1}
但是我们可以修改它的属性 obj.b = 2
obj变成(a:1, b:2)