我一直都这样使用三元表达式,但是我不喜欢其中的null。有更简单的方法吗?
var_1 === 'yes' ? var_2=true : null;
这是我正在做的事情的简化版本。我只想检查某事是否为真/假,然后做点其他事情什么都不做(所以我输入了null)。有更好的方法吗?
答案 0 :(得分:1)
最简单的方法是使用var_2 = var_1 === 'yes';
,因为它适用于yes
,undefined
,null
,''
和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;