`

[转]javascript with延伸的作用域是只读的吗?

阅读更多

 

当执行流进入下列任何一个语句时,作用域链将得到延长:

* 1) try-catch语句的catch块
* 2) with语句

此两个语句会在作用域链的前端添加一个变量对象。对with来说,其变量对象中包含着指定对象的所有属性和方法所作的变量申明;对catch来说, 其变量对象中包含的是被抛出的错误对象的申明。这些标量对象都是只读的,因此在with和catch语句中申明的变量都会被添加到所在执行环境的变量对象 中。

这是《JavaScript 高级程序设计第二版》中说明的一句话。可是,with延伸的作用域,标量对象真的是只读的吗?还是我理解的这个标量的意义不对?

不瞎说了,把自己的测试代码发一下就可:

//会跳转
( function ( ) {
    with ( location) {
        href= 'http://www.360.cn' ;
    }
} ) ( ) ;


// b
( function ( ) {
    var obj = { a: 'a' } ;

    with ( obj) {
        a = 'b' ;
    }

    alert ( obj.a ) ;
} ) ( ) ;

原文地址:http://www.xiaoxiaozi.com/2011/03/02/2018/
分享到:
评论

相关推荐

    javascript变量作用域

    JavaScript 变量作用域详解 JavaScript 变量作用域是基于其特有的作用域链的。在 JavaScript 中,变量作用域是指变量可以被访问和修改的范围。 JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 ...

    关于JavaScript作用域你想知道的一切

    Javacript 中有一系列作用域的概念。对于新的JS的开发人员无法理解这些概念,甚至一些经验丰富的开发者也未必能。这篇文章主要目的帮助理解JavaScript中的一些概念如:scope,closure, this, namespace, function ...

    深入理解JavaScript作用域和作用域链

    JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性及生命周期。JavaScript主要有两种作用域:全局作用域和局部作用域。 全局作用域是指在代码的任何位置都可以访问的变量或函数,这通常包括在最...

    Javascript的词法作用域分析.pdf

    Javascript词法作用域分析 Javascript中的词法作用域分析是指变量的作用域不是在执行时决定的,而是在定义时决定的,也就是说通过静态分析就能确定。因此,词法作用域也叫做静态作用域。 在Javascript中,一个方法...

    深化理解javascript作用域其次篇之词法作用域和动态作用域_.docx

    深化理解javascript作用域其次篇之词法作用域和动态作用域_ 深化理解javascript作用域其次篇之词法作用域和动态作用域,是javascript中非常重要的一部分。理解词法作用域和动态作用域对javascript的编程至关重要。...

    深入浅析JavaScript中的作用域和上下文

    JavaScript中,作用域和上下文是理解代码执行逻辑的关键概念。作用域指的是变量和函数的可见性和生命周期,而上下文则关乎`this`关键字的值,它指示了当前代码执行的环境。 **作用域(Scope)** 1. **全局作用域**...

    深入了解JavaScript,优化作用域链(2).pdf

    在JavaScript编程中,作用域和作用域链是影响程序性能的关键因素之一。优化作用域链是提高JavaScript代码执行效率的重要手段。下面我们从多个方面来详细探讨作用域链的概念、作用域链的层级关系、变量访问的性能影响...

    JavaScript作用域原理

    JavaScript作用域是编程中至关重要的概念,它定义了变量、函数和对象的可见性和生命周期。在JavaScript中,作用域主要分为两种类型:全局作用域和局部作用域。此外,随着ES6的引入,块级作用域和函数作用域也变得...

    JavaScript作用域示例详解_.docx

    本篇将详细解释JavaScript作用域的几个核心特性,包括无块级作用域、函数作用域、作用域链以及作用域链的创建时间。 1. 无块级作用域 不同于Java或C#,JavaScript并没有块级作用域,这意味着在JavaScript中,大括号...

    JavaScript:函数与作用域

    ### JavaScript:函数与作用域 #### 一、函数基础 **1.1 函数声明与表达式** 在JavaScript中,函数是一段可重用的代码块,用来执行特定任务。函数可以通过两种方式进行定义:函数声明和函数表达式。 - **函数...

    js变量作用域

    ### JavaScript 变量作用域详解 #### 一、引言 在探讨JavaScript的面向对象特性之前,理解变量作用域的概念至关重要。本篇文章旨在通过一系列示例和解释,帮助读者掌握JavaScript中的变量作用域机制。 #### 二、...

    javascript 函数及作用域总结介绍

    在JavaScript中,函数和作用域是编程的核心概念之一,它们涉及到代码的组织、执行以及变量的访问权限。本文将对JavaScript中的函数和作用域进行详细介绍,包括函数的声明、作用域的规则以及它们在实际开发中的应用。...

    JavaScript的作用域和块级作用域概念理解

    JavaScript的作用域和块级作用域是理解JS变量可见性和生命周期的关键概念。首先,我们要区分块级作用域和函数作用域。 1. **块级作用域**:在大多数编程语言中,如C,一对花括号(`{}`)定义了一个代码块,其中声明...

    javascript的函数作用域

    JavaScript 函数作用域知识点详解: JavaScript 是一种基于函数作用域的语言。在讨论函数作用域之前,有必要了解什么是作用域。在编程中,作用域是变量和函数的可访问范围。作用域决定了代码块外部能否访问到代码块...

    JavaScript — 原型链与作用域链1

    JavaScript 是一种广泛应用于Web开发的动态编程语言,其核心特性之一就是原型链和作用域链。这两个概念是理解和掌握JavaScript高级特性的基础。 首先,我们来深入探讨一下**作用域链**。作用域决定了变量在何处可以...

    Javascript作用域和作用域链原理解析

    JavaScript中的作用域是编程中一个基础且至关重要的概念,它决定了变量在何处可被访问以及其可见性。简单来说,作用域就是变量的生存空间,它定义了变量的生命周期和可访问区域。理解作用域有助于编写更加高效、简洁...

    再探JavaScript作用域

    js没有块级作用域(你可以自己闭包或其他方法实现),只有函数级作用域,函数外面的变量函数里面可以找到,函数里面的变量外面找不到。 first try: 这是为什么呢?? var a = 10; function aaa(){//step-4 ...

    javascript执行环境及作用域详解

    JavaScript执行环境及作用域详解: JavaScript的执行环境和作用域是理解这门语言核心概念的关键部分,它影响着变量和函数的作用范围以及生命周期。执行环境定义了变量或者函数有权访问的其他数据,而作用域则决定了...

    深入理解javascript作用域第二篇之词法作用域和动态作用域

    本文是深入理解javascript作用域系列第二篇——词法作用域和动态作用域 词法作用域  第一篇介绍过,编译器的第一个工作阶段叫作分词,就是把由字符组成的字符串分解成词法单元。这个概念是理解词法作用域的基础  ...

    作用域关闭:JavaScript的关闭作用域和作用域

    在JavaScript的世界里,作用域决定了变量的可见性和生命周期,而闭包则是一种高级特性,它允许函数访问并操作其外部作用域的变量,即使在外部作用域已经结束之后。 首先,我们来深入理解一下“作用域”。在...

Global site tag (gtag.js) - Google Analytics