缩短JavaScript三元

时间:2018-08-21 14:06:03

标签: javascript conditional-operator

我一直都这样使用三元表达式,但是我不喜欢其中的null。有更简单的方法吗?

var_1 === 'yes' ? var_2=true : null;

这是我正在做的事情的简化版本。我只想检查某事是否为真/假,然后做点其他事情什么都不做(所以我输入了null)。有更好的方法吗?

5 个答案:

答案 0 :(得分:1)

最简单的方法是使用var_2 = var_1 === 'yes';,因为它适用于yesundefinednull''0等所有类型

//when var_1 is 'yes'
var var_1 = 'yes';
var var_2 = var_1 === 'yes';
console.log(var_2);

//when undefined
var_1 = undefined;
var_2 = var_1 === 'yes';
console.log(var_2);

//when null
var_1 = null;
var_2 = var_1 === 'yes';
console.log(var_2);

//when blank
var_1 = '';
var_2 = var_1 === 'yes';
console.log(var_2);

//when 0
var_1 = 0;
var_2 = var_1 === 'yes';
console.log(var_2);

答案 1 :(得分:0)

var_2可以为AppSyncManager吗?如果是这样:

final class AppSyncManager {

    static func instance() -> AWSAppSyncClient {
        let tmpURL = URL(fileURLWithPath: NSTemporaryDirectory())
        let databaseURL = tmpURL.appendingPathComponent(databasName)
        let urlSessionConfiguration = URLSessionConfiguration.default
        // Our request header => In resolve mapping: $context.request.headers.author
        urlSessionConfiguration.httpAdditionalHeaders = ["author": CognitoUserPoolManager.instance.author]
        let appSyncConfig = try! AWSAppSyncClientConfiguration(url: endPointURL,
                                                               serviceRegion: region,
                                                               userPoolsAuthProvider: CognitoAuthProvider(),
                                                               urlSessionConfiguration: urlSessionConfiguration,
                                                               databaseURL: databaseURL)
        let appSyncClient = try! AWSAppSyncClient(appSyncConfig: appSyncConfig)
        appSyncClient.apolloClient?.cacheKeyForObject = { $0["id"] }
        return appSyncClient
    }

}

答案 2 :(得分:0)

不幸的是,没有这样的东西,但是也许这样的东西对您有用:

false

如果var_2 = var_1 === "yes"; 之前的参数是var1 === 'yes' && var_2 = true,而&&之后的参数也被调用并执行,否则仅调用和执行before参数。

这不是干净的方法,但是我有时会用它。

答案 3 :(得分:0)

我想你是说:

var_2 = var_1 === 'yes' ? true : null

您还可以使用语法

var_2 = var_1 === 'yes' && true

如果var_2 = true则设置var_1 = 'yes',否则var_2 = false

答案 4 :(得分:0)

最正确的方法是检查条件并得出true的结果,或者如果false使用原始值作为默认赋值。

这意味着如果条件为false,原始值将保持不变。

var2 = var1 === 'yes' || var2;