JavaScript作用域、事件、this关键字、严格模式、错误类型

如有帮助请点赞、收藏+关注,更多技术资料获取请点击

Gitee

作用域

在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。分别有全局作用域、函数作用域和块级作用域,函数作用域和块级作用域又统称为局部作用域。

  • 全局作用域,可以理解为网页的全部范围
  • 局部作用域

    • 函数作用域,函数内部,所以不同的函数内可以声明相同的变量
    • 块级作用域,if...else、for、forEach、while...

事件

HTML 事件是发生在 HTML 元素上的,JavaScript 可以触发这些事件。事件可以是浏览器行为,也可以是用户行为。

常见的HTML事件

  1. onchange:HTML 元素改变
  2. onclick:用户点击 HTML 元素
  3. onmouseover:鼠标指针移动到指定的元素上时发生
  4. onmouseout:用户从一个 HTML 元素上移开鼠标时发生
  5. nkeydown:用户按下键盘按键
  6. onload:浏览器已完成页面的加载

事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:

  1. 页面加载时触发事件
  2. 页面关闭时触发事件
  3. 用户点击按钮执行动作
  4. 验证用户输入内容的合法性
  5. ...

this关键字

面向对象语言中 this 表示当前对象的一个引用。但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

  1. 在方法中,this 表示该方法所属的对象
  2. 如果单独使用,this 表示全局对象
  3. 在函数中,this 表示全局对象
  4. 在函数中,在严格模式下,this 是未定义的(undefined)
  5. 在事件中,this 表示接收事件的元素
  6. 类似 call() 和 apply() 方法可以将 this 引用到任何对象

变量提升和严格模式

变量提升

  1. 函数及变量的声明都将被提升到函数的最顶部
  2. 变量可以在使用后声明,即变量可以先使用再声明
  3. 只有声明的变量会提升,初始化的不会

严格模式

严格模式(strict mode)即在严格的条件下运行。"use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

  • 为什么使用严格模式?
  1. 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
  2. 消除代码运行的不安全之处,保证代码运行的安全
  3. 提高编译器效率,增加运行速度
  4. 为未来新版本的Javascript做好铺垫
  • 严格模式的限制
  1. 不允许使用未声明的变量
  2. 不允许删除变量或对象
  3. 不允许删除函数
  4. 不允许变量重名
  5. 不允许使用八进制
  6. 不允许使用转义字符
  7. 不允许对只读属性赋值
  8. 不允许对一个使用getter方法读取的属性进行赋值
  9. 不允许删除一个不允许删除的属性
  10. 变量名不能使用 "eval" 字符串
  11. 变量名不能使用 "arguments" 字符串
  12. 由于一些安全原因,在作用域 eval() 创建的变量不能被调用
  13. 禁止this关键字指向全局对象
  • 严格模式新增了一些保留关键字

    • implements
    • interface
    • let
    • package
    • private
    • protected
    • public
    • static
    • yield

错误类型

引擎执行 JavaScript 代码时,会发生各种错误。可能是语法错误,通常是程序员造成的编码错误或错别字。可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。可能是由于来自服务器或用户的错误输出而导致的错误。当然,也可能是由于许多其他不可预知的因素。

  • ReferenceError
  • SyntaxError
  • TypeError

捕获语句

try { 
  ... //异常的抛出 
} catch(e) { 
  ... //异常的捕获与处理 
} finally { 
  ... //结束处理 
}

本文由mdnice多平台发布

你可能感兴趣的:(程序员)