为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript笔记

标签:
JavaScript

1)连续赋值问题;

示例1:

var a,b;
a=b=3;
a.x = a = 4;
console.log(a,b)  // 4,3

示例2:

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

示例1,说明了赋值计算是从右向左执行,“.”运算被视为变量声明,因此会优先执行;

示例2,再次印证了“.”运算的有优先计算权,并且执行的是{n:1}对象;

            然后执行从右向左执行,会给a变量赋值{n:2};

            然后执行从右向左执行,会给{n:1}对象增加一个新的属性

2)new关键字的含义

示例1:new Boolean(value)返回的是对象

       对象的创建过程(new时[[construct]]的处理逻辑)

  1. 创建一个build-in object对象p 并初始化

  2. 如果F.prototype是Object类型,则将p内部的[[prototype]]设置为F.prototype

  否则obj的[[prototype]]将为其初始值不需要指定(即Object.prototype).

  3. 将p作为this,使用args参数调用F的内部[[Call]]方法.

  3.1 内部[[Call]]方法创建当前执行上下文

  3.2 调用F的函数体

  3.3 销毁当前的执行上下文

  3.4 返回F函数体的返回值.如果F的函数体没有返回值则返回undefined

  4. 如果[[Call]]的返回值是Object类型,则返回这个值,否则返回p

示例2:Boolean(value);

value值为undefined null -0 +0 0 NAN ""下列值的时候,返回值为false,其他值外都返回true;


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消