美文网首页
JS 连续赋值

JS 连续赋值

作者: Cherry丶小丸子 | 来源:发表于2023-08-22 16:06 被阅读0次

先来看下 js 中基本类型的连续赋值是下面这样

var a = 1;
var b = a = 3;

js 中赋值是从右到左的,所以上面的连续赋值可以分解为下面这样

var a = 1;
a = 3;
var b = a;

所以最终,a = 3, b = 3

再来看一道经典面试题

var a =  {n: 1 };
var b = a;
a.x = a.x.y = { n: 2 };

此题会报错,因为 a.x 是 undefined, 所以就找不到 y 
var a = { n: 1 };
var b = a;
a.x = a = { n: 2 };
 
a.x // undefined
b // { n: 1, x: { n: 2 }}

但是面试题中的情况跟上面的不太一样
js 开始去从左到右寻找有没有未声明的变量 或者 报错信息,如果没有,先检查存在运算的优先级,当 '.' 跟 '=' 同时出现时,先进行 '.' 操作再做赋值操作也就是 '='
所以面试题的连续赋值可以分解为以下步骤:

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

最后给大家出了三道题给大家理解

var a = { n: 1, x: { y: 2 },z: 3 }
var b = a
c = a.x = a.x.y = a.c = b = { n: 10 };

a.c // { n: 10 }
a.x.y // undefined
a.x // { n: 10 }
a // { n:1, x: { n:10 }, c: { n: 10} , z: 3 }
var a = { x: { xx: 1 }, y: 2, z: 3 };
var b = a.x;
var c = a;
b.xx = 2
 
a // { x: { xx: 2 }, y: 2, z: 3 }
c // { x: { xx: 2 }, y: 2, z: 3 }
var a = { x: { xx: 1 }, y: 2, z: 3 };
var b = a.x;
var c = a;
a.w = a.x.xx = a.y = a = { x: 10, y: 20 };
 
c // { x: { xx: { x: 10, y: 10 } }, y: { x: 10, y: 20 }, z: 3, w: { x: 10, y: 20 } }

相关文章

  • JS连续赋值与求值顺序

    原文来自:https://www.cnblogs.com/morongwendao/p/6473095.html

  • 连续赋值

    python中是可以使用连续赋值的方式,一次为多个变量进行赋值的,如: 但是有一个问题,比如: 按照正常的顺序赋值...

  • js经典面试题-连续赋值运算

    今天看技术群里谈论连续赋值运算的问题,justjavac直接拿出了十年前的文章文章[https://justjav...

  • Verilog的各种赋值

    Verilog中的赋值主要有三种,连续赋值、过程赋值以及过程连续赋值。最常见的赋值对象主要是wire型变量和reg...

  • c++

    连续赋值 从右向左

  • JAVA与JS基础知识比对(一)

    js 变量 声明: var 变量名 赋值: 先声明,在赋值 声明之后直接赋值 以逗号隔开,给多个变量赋值 只声明,...

  • JS解构赋值

  • Js赋值分配

    1.** ‘=’** assignment(分配)赋值过程是从右到左的;在连等的情况下;var a = b = 5...

  • js解构赋值

    解构:按照一定模式,从数组和对象中提取值,对变量进行赋值。如果解构不成功,变量的值就等于undefined 数组解...

  • JS解构赋值

    什么是解构? 从一组值中挑出一或多个值,然后把它们分别赋给独立的变量,这也是一个非常常见的需求,举个简单列子 没有...

网友评论

      本文标题:JS 连续赋值

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