`
卓越在于专注
  • 浏览: 8871 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

深入理解js赋值表达式

阅读更多

     var  a={x:1};

   var  a.x=a={};

   alert(a.x)  //undefinded

上面的弹出值为什么是undefinded, 先看下面的例子:

  a=b=1;

 等价于  b=1,a=b;则alert(a)弹出值为1,因此可以判断:

   a.x=a={x:1};

  alert(a.x);  //弹出[ogject,object]

 但是实际却弹出undefinded,

  JavaScript 里,赋值运算是从右到左的,同等优先级下,右边的会先结合:

a.x = a = { } 等价为 a.x = (a = { })

 

有意思的地方就在这里,对于赋值表达式,解析的规则是:

The production AssignmentExpression : LeftHandSideExpression = AssignmentExpression is evaluated as follows:
1. Evaluate LeftHandSideExpression.
2. Evaluate AssignmentExpression.
3. Call GetValue(Result(2)).
4. Call PutValue(Result(1), Result(3)).
5. Return Result(3).

 

简单的举个例子,a=1;步骤:

   Step1. 计算 a 的值

Step2. 计算 1 的值
Step3. 得到 Step2 的结果
Step4. 将 Step3 的结果赋值给 Step1 的结果
Step5. 返回 Step3 的值

 

 因此,对于上面,a.x={x:1}; a.x=a={ };alert(a.x);可分解如下步骤:

 

  step1: 计算a.x的值,此时a.x指向{x:1}对象的x;

  step2:计算a的值,让a重新指向{};

  step3:得到step2的值,也就是{};

  step4: 将step3的结果赋给 Step1 的结果,也就是{x:1}的对象x重新赋值{};

  Step5:  返回 Step3 的结果;

执行完毕,a指向{},则a.x为undefinded,

                                              -------转自IT技术博客大全

分享到:
评论

相关推荐

    JavaScript基础语法之js表达式_.docx

    JavaScript的表达式在程序中扮演着核心角色,它们不仅用于计算,还用于控制流程(例如条件表达式、赋值表达式等)。理解这些基本表达式类型及其用法是编写有效JavaScript代码的关键。在实际编程中,开发者通常会结合...

    550836 深入理解JavaScript [(美)罗彻麦尔著]_jvascript_

    《深入理解JavaScript》一书由美国作者罗彻麦尔撰写,是JavaScript编程领域的经典之作。本书旨在帮助读者全面、深入地掌握JavaScript这门强大的脚本语言,从而在Web开发领域中发挥出更大的潜力。 JavaScript,通常...

    深入理解Kotlin中的Lambda表达式

    ### 深入理解Kotlin中的Lambda表达式 Kotlin作为一种现代、静态类型的编程语言,在Java虚拟机(JVM)上运行,同时也支持编译成JavaScript或原生代码。Kotlin的一大亮点在于它对函数式编程的支持,尤其是通过lambda...

    JS脚本组件表达式计算.rar

    "JS脚本组件表达式计算"涉及到的核心概念是利用JavaScript进行数学表达式的解析与计算。在网页开发中,这通常涉及到用户输入的动态计算、数据处理以及自定义函数的实现。 一、JS表达式计算 1. 基本运算符:包括算术...

    JavaScript手册及正则表达式详解[收藏]

    在这个“JavaScript手册及正则表达式详解”中,我们将深入探讨这两个关键主题。 一、JavaScript基础 JavaScript是一种解释型、弱类型、基于原型的动态脚本语言。它主要应用于网页和网络应用开发,可以对用户交互...

    揭秘命名函数表达式

    ### 揭秘命名函数表达式:深入理解JavaScript的精髓 #### 核心概念与区别:函数表达式 vs 函数声明 在JavaScript的世界里,创建函数的两大方式——**函数表达式**与**函数声明**——构成了语言的核心部分,两者...

    深入理解JavaScript作用域共12页.pdf.zip

    深入理解这一主题,对于编写高效、可维护的代码至关重要。在这个12页的PDF文档中,我们可以期待涵盖以下几个核心知识点: 1. **全局作用域**:在JavaScript中,全局作用域是最外层的作用域,所有在函数外部声明的...

    JS 有名函数表达式全面解析

    ### JS 有名函数表达式全面解析 #### 一、引言 JavaScript 作为一种广泛应用的脚本语言,在前端开发中占据着举足轻重的地位。在 JavaScript 中,函数是一等公民,这意味着函数不仅可以作为参数传递给其他函数,还...

    07-对象赋值.md

    这包括对赋值操作、函数调用、控制流程、异步逻辑等方面的深入理解。 4. 值类型与引用类型的区别:在JavaScript中,基本数据类型(如Undefined, Null, Boolean, Number, String, Symbol, BigInt)是按值传递的,这...

    javascript的正则表达式

    本篇文章通过对一个日期格式验证函数的分析,深入介绍了JavaScript中正则表达式的使用技巧。通过灵活运用正则表达式的特性,可以高效地完成字符串的搜索、替换和验证等工作。在实际开发过程中,正则表达式的掌握对于...

    深入理解JavaScript特性1

    《深入理解JavaScript特性1》是一本面向前端开发者和JavaScript编程爱好者的指南,旨在帮助读者掌握JavaScript语言的新进展,特别是ECMAScript 6 (ES6)引入的诸多特性。书中通过丰富的实例,逐步解析了JavaScript的...

    JavaScript运算符与表达式案例.pdf

    本文将深入探讨JavaScript中的运算符与表达式,并通过具体的案例进行解析。 首先,我们要理解什么是表达式。在编程语言中,表达式是能够产生一个值的任何组合,可以是单个变量、常量,也可以是运算符连接的多个元素...

    易语言源码易语言JS脚本组件表达式计算源码.rar

    易语言源码是学习和研究易语言程序设计的重要资料,通过阅读源码,我们可以深入理解易语言的编程机制、函数调用以及控制结构等。在这个特定的源码中,开发者可能已经实现了对JavaScript表达式的解析和求值功能,这...

    javascript表达式和运算符中的一些容易忽略的点共2

    本篇文章将深入探讨JavaScript表达式和运算符中的一些容易被忽视的点。 一、JavaScript表达式 1. 立即调用的函数表达式(IIFE):一种常见的JavaScript编程技巧,用于立即执行一个函数,避免污染全局作用域。例如 `...

    深入浅出JavaScript源代码

    深入理解JavaScript的源代码对于任何想要成为优秀前端开发者或者全栈工程师的人来说至关重要。 首先,我们要明白JavaScript的基础,包括变量、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、...

    深入理解JavaScript执行上下文、函数堆栈、提升的概念.pdf

    执行上下文可以理解为当前 JavaScript 代码被评估和执行时的一个环境,其中包含了变量、函数声明、作用域链以及 `this` 的值。函数堆栈则描述了函数调用时的顺序和结构,而变量提升则是 JavaScript 中的一个特殊机制...

    详解JavaScript的表达式与运算符

    理解JavaScript的表达式与运算符对于编写有效的代码至关重要。它们是程序逻辑的基础,帮助我们完成各种计算、比较和赋值任务。熟练掌握这些基础知识,可以更有效地编写和调试代码,提高编程效率。

    JavaScript正则表达式解析URL的技巧

    在JavaScript中,正则表达式是一种描述字符模式的对象,用来识别字符串中的文本或者检查字符串是否符合特定模式...对于希望深入理解正则表达式及其在URL解析中应用的开发者来说,本文提供了一个良好的起点和实例参考。

Global site tag (gtag.js) - Google Analytics