类别:行业新闻 发布时间:2021-01-11 浏览人次:
今天遇到了一个连续赋值的经典案例,网友们给出的答案也是五花八门,看起来有些繁琐,我也来说说自己的看法。
下面就是这个经典案例:
var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a); console.log(b); console.log(a.x); console.log(b.x);
我们先来看一下普通连续赋值,即:变量赋值的类型是数据类型值
var a=3; var b=a=5; console.log(a); console.log(b);
一般来说,等号赋值的方向是从右至左,那么上面的代码等同于下面这段代码,那么我们就用下面这段代码来解释上面的代码:
var a=3; //全局变量a被赋值为3 var a=5; //此时a被重新赋值为5 var b=a; //将a的值赋给全局变量b console.log(a);//a最终的值就是第二次被赋的值:5 console.log(b);//按照代码执行顺序b的值也是:5
上面的小案例用来抛砖引玉,现在我们来分析这个经典案例:
var a = {n: 1};//a第一次被赋值,是一个引用类型值,请记得变量赋值为引用类型值的时候,通过变量改变这个对象的时候,对象本身也发生了变化 var b = a;//b被赋值为a,因此b就是对象{n:1} a.x = a = {n: 2}; //这个赋值与之前的简单案例有所不同,a.x指的是给a添加一个x属性,在js的运算中“.”和"="运算符同时出现,会先执行"."运算 //因此,赋值顺序被改变了,是先给a.x赋值,再给a赋值 //就是先执行:a.x={n:2},注意这里a并未改变,是给a的x属性赋值为{n:2},a还是{n:1} //再回到我代码中的第一句话,这个赋值行为,改变了{n:1}这个对象,即给它增加了名为x的属性 //再执行a={n:2},这是变量a不再是对象{n:1},而被重新赋值为一个新的对象{n:2}; console.log(a);//自然此时a是对象{n:2} console.log(b);//a的二次赋值,并没有影响b,b还是对象{n:1},但是由于a在重新赋值之前,给{n:1}这个对象,增加了一个x属性,因此,这时的b已经有了x属性 console.log(a.x);//{n:2}对象没有x属性,所以结果是undefined console.log(b.x);//综上所述,这个结果是{n:2}
以上这篇js中变量的连续赋值(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持凡科。
js中自变量的持续取值(案例解读) 文章投稿:jingxian 下边网编就为大伙儿产生一篇js中自变量的持续取值(案例解读)。网编感觉挺好的,如今就共享给大伙儿,也给大伙儿做下参照。...
2021-01-11B2C电子器件商务接待网站建设是公司拓展市场销售方式的关键方位之一,而B2C电子器件商务接待买东西网站是搭建在互联网营销推广基本以上的,因为其更加深入入的运用互连互联网去...
2021-01-11您的部位: > 新闻报道新闻资讯 > 网站制作 > 如何建立网站啊一、明确网站主题风格网站主题风格便是你创建的网站所需包括的关键內容,一个网站务必要有一个确立的主题风格。非常...
2021-01-11jQuery标准分页查询 替代线下查寻(附编码) 文章投稿:sss 本文关键详细介绍了jQuery标准分页查询替代线下查寻,根据编码案例让阅读者更加深入入掌握该作用的实际操作,实际实...
2021-01-11深层次浅谈JavaScript中的RegExp目标 文章投稿:mrr 正则表达式表述式(regular expression)是一种表述文字方式(即标识符串构造)的方式,有点儿像标识符串的模版,经常作为依照“给...
2021-01-11制作网页时看起来不符合理的姿势实际上是一切正常的 : :01 大家都了解互联网在发展趋势,也觉得的到,此外网站也在发展趋势,有关制作网页的方法也产生了天翻地覆一一样的转变...
2021-01-11