JS中同一语句中同时赋值两个变量

这是一道前端面试题:

var a = {n: 1}
var b = a;
a.x = a = {n: 2}
console.log(a.x);   //undefined
console.log(b.x)    //Object {n:2}

 可是变形为如下:

        var a = {n: 1};
        var b = a;
        a.x = {n: 2};
        a = {n: 2};
        console.log(a.x);  //undefined
        console.log(‘222‘+b.x)   //Object {n:2}
        console.log(b);         //{n:1,x:{n:2}}   

首先,先定义后执行的原则要明确一下;

然后就是,从上面的例子可以得出结论,当右边赋值于左边的时候,而左边存在两个等号两个变量的时候,赋值顺序从左到右,由上至下;

时间: 2024-10-19 04:26:02

JS中同一语句中同时赋值两个变量的相关文章

java中switch语句中的defaul条件的位置

在java中switch语句中,每个case分支就是一个入口,如果都没有满足条件,那么将会走到default分支中.那么这个default分支的位置会不会影响到执行的流程呢? package com.app.statement; import java.util.Scanner; /**  * Created by charles on 2015/7/12.  */ public class SwitchTest {     public static void main(String[] ar

C++中switch 语句中的变量声明和

switch 内部的变量定义: 1 int i = 1; 2 switch(i) 3 { 4 case 0: 5 string str; //error 6 int val1 = 0; //error 7 int val2; //right 8 int val3; val3 = 0; //right 9 case 1: 10 val2 = 9; 11 cout << val2 << endl; 12 } <C++ Primer> P163: 如果在某处一个带有初始值的变

Mybatis中sql语句中的in查询,一定要判断null的情况

不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法. select from loanwhere LOAN_ID in <foreach item="item" index="id" collection="list" open="(" separator="," close=")"> #{item} 要么在Mybatis的sql文件中,要么在Java程序中

hibernate中hql语句中list和iterate区别

1.使用list()方法获取查询结果,每次发出一条语句,获取全部数据.2.使用iterate()方法获取查询结果,先发出一条SQL语句用来查询满足条件数据的id,然后依次按照这些id查询记录,也就是要执行N+1条SQL语句(N为符合条件的记录数) 两次执行list()方法,每次执行都是发出一条SQL语句,查询所有数据.下面看看两次执行iterate()方法的输出情况两次执行iterate()方法,第一次执行时发出了N+1条SQL语句,而第二次执行,则只发出一套SQL语句,与先执行list()方法

使用正则表达式实现像SQL中LIKE语句中的%和_通配

在项目中我们经常遇到将数据库的数据取到后再次进行筛选过滤的情况.LINQ to Entity提供了统一的查询接口并且可以高效的完成工作,但是对于我们常在SQL中使用的%和_这样的通配符并没有支持.我们只能通过String.Contains方法来实现简单的通配.使用String.Contains方法是无法达到在查询串中使用通配符的目的的.正则表达式虽然晦涩难懂,但功能十分强大,解决个统配符绰绰有余. 代码如下:     public static class LINQHelper     {   

mybatis的xml中sql语句中in的写法(迭代遍历)

这里使用 foreach标签 <foreach  item="item" collection="listTag" index="index"  open="(" separator="," close=")"> #{item} </foreach> foreach元素的属性主要有 item,index,collection,open,separator,clos

Hibernate中HQL语句中list与iterate区别

session.createQuery("from Classes").list() session.createQuery("from Classes").iterate(); 这两者有什么区别    *  发出sql语句的不同    *  利用缓存的不同

Oracle 中sql语句中的取前n条数据

取得薪水最高的前五名员工 sql: select * from ( select empno,ename,sal from emp order by sal desc) where rownum< 6; 注意: select * from ( table ) where rownum< 6; 取前n条数据,oracle中用rownum < m; 1:其中m-1 等于要取的条数 2:rownum 只能有 < ,<= ,没有 > 3: 如m为6,则取得是前5条数据. 原文地

在aardio的函数里try...catch语句中使用return。

try{ error("错误信息"); //使用error可以抛出一个错误 //如果error函数在try语句中,程序将不会报错,而会直接跳出try语句 } catch(e){ //如果try语句后跟catch语句则可以捕获到这个错误信息e } 以上是try...catch的语法: try语句尝试执行一个语句块,遇到错误则退出try语句块而不是中断aardio程序.如果使用了catch语句块就可以捕获异常(catch语句块是可选的). 以上是在aardio使用手册中的一段话. 也许在使