javascript - 之间的区别!和 !在 JavaScript 中

标签 javascript angularjs

<分区>

我遇到过那些正在检查 user.rank 属性的运算符:

<div ng-show="!!user.rank">
    {{user.rank}}
</div>
<button ng-show="!user.rank"  ng-click="addRank(user)">Add Rank</button>

它们有何不同,我们可以用什么代替?

最佳答案

单个爆炸 (!) 用于取反 bool 值。

双击 (!!) 用于将 truthy/falsey 值强制转换为 bool 值 true 或 false。

例如

var x = 0; // a falsey value
console.log(x); // logs 0
console.log(!x)// logs true
console.log(!!x)// logs false

var y = "Hello world"; // a truthy value
console.log(y); // logs "Hello world"
console.log(!y)// logs false
console.log(!!y)// logs true

适用于您的具体情况

ng-show="!!user.rank"

ng-show 无疑需要一个实际的 bool 值,而 user.rank 显然要么是真值要么是假值 - 将其强制转换为 bool 值可以适本地满足您的 Angular Directive(指令)。

关于javascript - 之间的区别!和 !在 JavaScript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414933/

相关文章:

javascript - 尝试 k6 运行 js 文件时获得权限被拒绝

javascript - jQuery 点击函数找不到选择器

javascript - 使用 Web API 存储库模式编辑/更新

angularjs - IE 11 - 图像在破坏 View 后保留在浏览器内存中

javascript - Angular 4通过主机监听器更新输入文本值

javascript - 有关 async/await 与 Promises 和事件循环的性能问题

javascript - node.js 流头范围未定义

javascript - 选择中的 ng-change 指令无法正常工作

javascript - Angularjs - 谷歌地图设置多个标记的缩放

javascript - 使用 angular 指令绘制 highchart 饼图但是当我在成功函数中使用它时它不起作用