问个较基础的js题

var json={ name:"mike"};
console.log("name" in json) ---> true
console.log(!"name" in json) ---> false
但为啥,基础不好,请懂的人解释下,谢谢了
console.log("age" in json) ---> false
console.log(!"age" in json) ---> false

阅读 2.1k
3 个回答

console.log(!"age" in json)它其实是这样运行的:

  • 首先,计算这个!"age" ---> false, !是将其它值转换为boolean值的

  • 然后, 计算 false in json ---> false

其实console.log(!("age" in json)) ---> true

name属性类似

首先你必须要了解下字符串取反的知识了,很明显的是,1,3是没有问题的,找属性,有则为true,否为false;
但是,需要明白的是,字符串取反的问题,如下:

!‘age’
!‘name’

本身打印出来就是false,然后根据false再找属性,所以为false;

这个怎么了.....

这个是运算符的优先级问题吧..

首先 json 对象里面是有 name 属性没有 age 属性的

所有第1,3log的原因比较清楚

2,4 的原因是:

!"age" == !"name"

他们的值都为 false

在json对象里面没有

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题