定义语言的基础
规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象
js nodejs 都实现了ECMAScript
文档对象模型 Document Object Model
针对XML但经扩展用于HTML的应用程序编程接口(API)
把整个页面映射为多层节点结构,每个节点包含不同类型的数据。
借助DOM API,可删除,添加,替换,修改任何节点
DOM1:
DOM2:
DOM3:
访问和操作浏览器窗口和子窗口frame,通常把任何特定于浏览器的扩展都归于BOM范畴。
不存在defer,saync属性,浏览器会按script在页面中的先后顺序依次解析,第一个解析完后,第二个才会被解析。
对不推迟执行的脚本,必须解释完位于js标签内的的全部代码,才能继续渲染页面
在解释外部js文件时,页面会被阻塞(阻塞时间包含文件下载时间)
可跨域取得相应资源,不受同源策略限制。
放在head中,必须等JavaScript都被下载,解析,执行完后才呈现页面
把脚本放在页面底部
let script =document.createElemnet('script')
script.src='aa.js'
document.head.apendChild(script)
会严重影响性能
XHTML模式会在页面的MIME类型被指定为application/xhtml+xml时触发。
a < b中的 < 在XHTML中被当作新标签解析。但作为标签,< 后不能跟空格,
解决:
< 替换 <
用CData片段包含JavaScript,包含不需要解析的任意个数的文本内容
通过文档类型 doctype切换实现
主要体现在css渲染方面,但对js也会有一些副作用。
混杂模式 :省略doctype声明 未发现文档类型声明,默认开启混杂模式,
标准模式
开启标准模式:
标准准模式(处理图片间隙,表格中使用)
js被禁用时出现
区分大小写
C语言风格
js不同解析和执行模式,ECMAScript3中的不确定行为得到处理,不安全的操作会抛出错误
整个脚本启用,顶部添加
“use strict”;
指定函数在严格模式下执行
末尾;
语句块{}
break do instanceof typeof case else new var catch finally return void continue for switch while debugger* function this with default if throw
delete in try
abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native
不初始化时,变量保存undefined
函数作用域,在函数退出时被销毁
函数内定义时省略var,可创建一个全局变量(不推荐,全局变量很难维护)
严格模式下不能定义eval,arguments的变量
声明提升,自动提升到函数作用域的顶部
块作用域
不允许出现冗余声明
不会在作用域中被提升
在全局作用域中生命的变量不会成为window对象的属性
不可能检查前面受否已经使用let声明过同名变量,不可能在没有声明的情况下声明它
不能使用let进行条件声明