的意思 !!JavaScript的

ssb*_*sbb 7 javascript angularjs

我发现了一些关于使用angular进行身份验证的代码,我无法理解这个技巧:

authService.isAuthenticated = function () {
    return !!Session.userId;
};
Run Code Online (Sandbox Code Playgroud)

什么!!意思是"userId的不同"?

无论何时true = !!true = !!!!true =>etc,它都不明白这一点.

有人可以帮帮我吗?

(https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec为源,部分'AuthService')

Geo*_*-it 11

!!将任何值转换为boolean

 > !!null
 false

 > !!true
 true

 > !!{}
 true

 > !!false
 false
Run Code Online (Sandbox Code Playgroud)

如果值是,falsey那么结果将是false.如果是truthy结果的话true.

更重要的是,第三个!反转了转换后的值,因此以上示例变为:

    > !!!null
    true

    > !!!true
    false

    > !!!{}
    false

    > !!!false
    true
Run Code Online (Sandbox Code Playgroud)