JavaScript小技巧:!!的使用

今天看Vue.js源代码,其中有一段和enumerable相关的代码,如下所示:

/**
 * Define a property.
 */
function def (obj, key, val, enumerable) {
  Object.defineProperty(obj, key, {
    value: val,
    enumerable: !!enumerable,
    writable: true,
    configurable: true
  });
}

其中!!enumerable中"!!"是个一个很神奇的小技巧。我们在提供接口给别人用的时候,经常需要别人传入一个布尔类型的参数。然而很多时候,使用接口人的不会老老实实地传入一个布尔值,可能会用0代替false,用一个Object代替true。有时候用户会根本不写这个参数,这时候这个传入的值是undefined(布尔为false)。因此我们需要对这些值进行处理,转化为布尔值。

我们都知道"!"是取反符号,!true=false,!false=true。但是如果!后面不是一个布尔值的时候,"!"会先把这个值强制转化为布尔类型,然后再进行取反操作,举个例子:

取反操作
取反操作

“!”可以将一个值对应布尔值的取反。但是如果我们知道这个值对应的布尔值呢?只需要在!号前再加一个!,取反的取反就是原来的布尔值,举例如下:

取反的取反操作
取反的取反操作

Vue.js源码在调用这个定义的def函数的时候,基本上只写了前面三个参数,第四个参数没有写(默认为undefined),这是"!!"就可以自动地将undefined转化为false,从而使得enumerable传入的值为布尔类型的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值