X
Xs11
V1
2023/04/26阅读:12主题:默认主题
JavaScript作用域、事件、this关键字、严格模式、错误类型
为感谢大家的支持,特发福利红包(支F宝口令红包),点击前往领取:Gitee
作用域
在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。分别有全局作用域、函数作用域和块级作用域,函数作用域和块级作用域又统称为局部作用域。
-
全局作用域,可以理解为网页的全部范围
-
局部作用域
-
函数作用域,函数内部,所以不同的函数内可以声明相同的变量 -
块级作用域,if...else、for、forEach、while...
-
事件
HTML 事件是发生在 HTML 元素上的,JavaScript 可以触发这些事件。事件可以是浏览器行为,也可以是用户行为。
常见的HTML事件
-
onchange:HTML 元素改变 -
onclick:用户点击 HTML 元素 -
onmouseover:鼠标指针移动到指定的元素上时发生 -
onmouseout:用户从一个 HTML 元素上移开鼠标时发生 -
nkeydown:用户按下键盘按键 -
onload:浏览器已完成页面的加载
事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:
-
页面加载时触发事件 -
页面关闭时触发事件 -
用户点击按钮执行动作 -
验证用户输入内容的合法性 -
...
this关键字
面向对象语言中 this 表示当前对象的一个引用。但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。
-
在方法中,this 表示该方法所属的对象 -
如果单独使用,this 表示全局对象 -
在函数中,this 表示全局对象 -
在函数中,在严格模式下,this 是未定义的(undefined) -
在事件中,this 表示接收事件的元素 -
类似 call() 和 apply() 方法可以将 this 引用到任何对象
变量提升和严格模式
变量提升
-
函数及变量的声明都将被提升到函数的最顶部 -
变量可以在使用后声明,即变量可以先使用再声明 -
只有声明的变量会提升,初始化的不会
严格模式
严格模式(strict mode)即在严格的条件下运行。"use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。
-
为什么使用严格模式?
-
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为 -
消除代码运行的不安全之处,保证代码运行的安全 -
提高编译器效率,增加运行速度 -
为未来新版本的Javascript做好铺垫
-
严格模式的限制
-
不允许使用未声明的变量 -
不允许删除变量或对象 -
不允许删除函数 -
不允许变量重名 -
不允许使用八进制 -
不允许使用转义字符 -
不允许对只读属性赋值 -
不允许对一个使用getter方法读取的属性进行赋值 -
不允许删除一个不允许删除的属性 -
变量名不能使用 "eval" 字符串 -
变量名不能使用 "arguments" 字符串 -
由于一些安全原因,在作用域 eval() 创建的变量不能被调用 -
禁止this关键字指向全局对象
-
严格模式新增了一些保留关键字 -
implements -
interface -
let -
package -
private -
protected -
public -
static -
yield
-
错误类型
引擎执行 JavaScript 代码时,会发生各种错误。可能是语法错误,通常是程序员造成的编码错误或错别字。可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。可能是由于来自服务器或用户的错误输出而导致的错误。当然,也可能是由于许多其他不可预知的因素。
-
ReferenceError -
SyntaxError -
TypeError
捕获语句
try {
... //异常的抛出
} catch(e) {
... //异常的捕获与处理
} finally {
... //结束处理
}
作者介绍
X
Xs11
V1