3. js高级性能
JavaScript 异常
try
语句使您能够测试代码块中的错误。
catch
语句允许您处理错误。
throw
语句允许您创建自定义错误。
finally
能够在 try 和 catch 之后执行代码,无论结果如何
try && catch
1 | try { |
Js抛出异常
当发生错误时,JavaScript 通常会停止并产生错误消息。 实际上会创建带有两个属性的 Error 对象:name 和 message。
属性 | 描述 |
---|---|
name | 设置或返回错误名 |
message | 设置或返回错误消息(一条字符串) |
error 的 name 属性可返回六个不同的值:
错误名 | 描述 |
---|---|
EvalError | 已在 eval() 函数中发生的错误 |
RangeError | 已发生超出数字范围的错误 |
ReferenceError | 已发生非法引用 |
SyntaxError | 已发生语法错误 |
TypeError | 已发生类型错误 |
URIError | 在 encodeURI() 中已发生的错误 |
throw 语句
允许创建自定义错误。异常可以是 字符串、数字、布尔、对象。
1 | <input id="demo" type="text"> |
现代浏览器通常会结合 JavaScript 与内置的 HTML 验证,通过使用在 HTML 属性中定义的预定义的验证规则:
1 | <input id="demo" type="number" min="5" max="10" step="1"> |
finally 语句
1 | try { |
JavaScript 变量作用域
如果为尚未声明的变量赋值,此变量会自动成为全局变量。(在严格模式中不会自动创建全局变量)
HTML的全局变量
通过 JavaScript,全局作用域形成了完整的 JavaScript 环境。
在 HTML 中,全局作用域是 window。所有全局变量均属于 window 对象。
1 | var carName = "porsche"; |
全局变量会在关闭页面时被删除。
JavaScript 提升(Hoisting)
Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)。因此,可以在声明变量之前使用它。
注意:变量的初始化不会被提升
严格模式中的 JavaScript 不允许在未被声明的情况下使用变量。
JavaScript 严格模式
通过在脚本或函数的开头添加"use strict";
来声明严格模式。
不允许的事项
在不声明变量的情况下使用变量,是不允许的:
1 | ; |
删除变量和函数是不允许的:
1 | ; |
重复参数名不允许;
八进制数值文本不允许;
转义字符不允许;
写入只读属性不允许;
1 | ; |
JavaScript this
关键词
JavaScript this 关键词指的是它所属的对象。
它拥有不同的值,具体取决于它的使用位置:
- 在方法中,this 指的是所有者对象。
- 单独的情况下,this 指的是全局对象。 ( 在浏览器窗口中,全局对象是
[object Window]
) - 在函数中,this 指的是全局对象。
- 在函数中,严格模式下,this 是 undefined。
- 在事件中,this 指的是接收事件的元素。
在 HTML 事件处理程序中,this 指的是接收此事件的 HTML 元素:
1 | <button onclick="this.style.display='none'"> |
显示函数绑定
call()
和apply()
方法是预定义的 JavaScript 方法。它们都可以用于将另一个对象作为参数调用对象方法。
1 | var person1 = { |
JavaScript let
循环作用域
1 | var i = 7; |
而使用let
:
1 | let i = 7; |
在函数内声明,var
和let
都有函数作用域;
在块外声明,var
和let
都有全局作用域;在 HTML 中,全局作用域是 window 对象。通过 var 关键词定义的全局变量属于 window 对象。 通过 let 关键词定义的全局变量不属于 window 对象。
在相同的作用域,或在相同的块中,通过let
重新声明一个var
变量是不允许的。通过let
重新声明一个let
变量也是不允许的·。
JavaScript const
const 变量必须在声明时赋值
1 | const PI = 3.14159265359; |
常量对象的属性可以更改:
1 | // 您可以创建 const 对象: |
但无法重新为常量对象赋值:
1 | const car = {type:"porsche", model:"911", color:"Black"}; |
数组也类似。
JavaScript Json
JSON( JavaScript Object Notation )
是存储和传输数据的格式。JSON 经常在数据从服务器发送到网页时使用。
语法规则
- 数据是名称/值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
1 | { |
JSON.parse()
把json转换为JavaScript对象
1 | var obj = JSON.parse(text); |
JavaScript 调试
通常通过 F12 键启动浏览器中的调试器,然后在调试器菜单中选择“控制台”。
console.log()
方法
在调试窗口中显示JavaScript
的值
1 | <script> |
设置断点
在调试窗口中,您可在 JavaScript 代码中设置断点。在每个断点中,JavaScript 将停止执行,以使您能够检查 JavaScript 的值。在检查值之后,您可以恢复代码执行。
debugger 关键词
会停止 JavaScript 的执行,并调用(如果有)调试函数。这与在调试器中设置断点的功能是一样的。
1 | var x = 15 * 5; |
常见错误
这条 if 语句返回 false(也许不像预期),因为 0 为 false:
1 | var x = 0; |
…