如何使用三元运算符?
如何使用三元运算符?
我在$state
上有一个条件的$stateParams
,我正在尝试将当前的$stateParams
值赋给paramId
。如何使用三元运算符来实现这个任务?\ncommonCtrl.js\n
var paramId = $stateParams.processId ? $stateParams.assessmentId;
\nconfig.js\n
.state('app.addPrcChallenge', { url: '/add/prcChallenge/:processId/:assessmentId?', templateUrl: 'views/process/processChallenge.html', controller: 'ProcessChallengesCtrl', data: { authenticate: true },
很不幸,JavaScript没有像C#那样的null合并运算符,但是您可以使用以下结构实现几乎相同的效果:
var paramId = $stateParams.processId || $stateParams.assessmentId;
基本上,这意味着如果`$stateParams.processId`的值不是`undefined`,那么`paramId`将等于`$stateParams.processId`,否则将等于`$stateParams.assessmentId`。
关于为什么有人对此进行了下投票,我看不到任何原因。我更喜欢您的答案。
解决方法:
使用逻辑或运算符(`||`)可以实现类似于null合并运算符的效果。当左侧的操作数的值为真时,逻辑或运算符返回左侧操作数的值;当左侧的操作数的值为假时,逻辑或运算符返回右侧操作数的值。
在上面的示例中,`$stateParams.processId`和`$stateParams.assessmentId`都是变量,通过使用逻辑或运算符,可以将`paramId`的值设置为`$stateParams.processId`的值,如果`$stateParams.processId`的值为真(即不是`undefined`),否则将设置为`$stateParams.assessmentId`的值。
这种方法可以用来处理变量或对象的默认值,以及在处理可能为`undefined`的变量时避免出现错误。