美文网首页1000天日更计划
Day13:作用域嵌套与异常

Day13:作用域嵌套与异常

作者: 钱塘风华 | 来源:发表于2019-04-06 21:20 被阅读0次

【书名】:你不知道的JavaScript(上卷)

【作者】:Kyle Simpson

【本书总页码】:213

【已读页码】:29

1. 作用域嵌套

当发生作用域嵌套时,引擎的查找规则如下:

引擎从当前的执行作用域开始查找变量,如果找不到,就向上一级继续查找。当抵达最外层的全局作用域时,无论找到还是没找到,查找过程都会停止。

2. 异常

如果 RHS 查询在所有嵌套的作用域中遍寻不到所需的变量,引擎就会抛出 ReferenceError异常。

当引擎执行 LHS 查询时,如果在顶层(全局作用域)中也无法找到目标变量,全局作用域中就会创建一个具有该名称的变量,并将其返还给引擎,前提是程序运行在非“严格模式”下。“严格模式”禁止自动或隐式地创建全局变量。因此,在严格模式中 LHS 查询失败时,并不会创建并返回一个全局变量,引擎会抛出同 RHS 查询失败时类似的 ReferenceError 异常。

如果 RHS 查询找到了一个变量,但是你尝试对这个变量的值进行不合理的操作,比如试图对一个非函数类型的值进行函数调用,或着引用 null 或 undefined 类型的值中的属性,那么引擎会抛出另外一种类型的异常,叫作 TypeError。

ReferenceError 同作用域判别失败相关,而 TypeError 则代表作用域判别成功了,但是对结果的操作是非法或不合理的。

相关文章

  • Day13:作用域嵌套与异常

    【书名】:你不知道的JavaScript(上卷) 【作者】:Kyle Simpson 【本书总页码】:213 【已...

  • Python正式课第六天

    一、函数作用域 1. 局部作用域 L:local,局部作用域,即函数中定义的变量; 2. 嵌套作用域 E:encl...

  • 变量声明、声明提前和作用域

    一. 作用域 分为全局作用域和函数作用域 函数作用域简言之就是:变量在声明他们的函数体以及这个函数体嵌套的任意函数...

  • ruby元编程第二部分

    1. 作用域 ruby中有三个作用域分界线(可以称之为作用域门),作用域是单独分开的不具备嵌套作用域的特点(即不具...

  • 作用域及闭包(closure)

    作用域:1. 全局 作用域链:函数嵌套 闭包(Closure)函数嵌套,在内嵌函数中使用到外部函数的局部变量(即内...

  • python-函数

    作用域 L local局部作用域 E enclosing嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作...

  • 你不知道的JavaScript【上】(Part1)第二章 词法作

    词法作用域 作用域是一套规则:用来管理引擎如何在当前作用域以及嵌套子作用域中根据标识符名称进行变量查找。作用域的两...

  • 把作用域链比喻成一个建筑

    前言 最近在看《YOU DON’T KNOW JS》一书,里面讲到作用域的嵌套,内容主要讲了两点:一是作用域嵌套产...

  • 块级作用域

    在ES6中允许块级作用域的任意嵌套。外层作用域无法读取内层作用域的变量。 如 {{let i = 1;}conso...

  • 作用域链(2018-04-24)

    分为 调用子函数 和 嵌套函数 的情况 1、嵌套函数,在函数调用的时候会生成作用域链,作用域链的最上层为最里层变量...

网友评论

    本文标题:Day13:作用域嵌套与异常

    本文链接:https://www.haomeiwen.com/subject/hpsdiqtx.html