如何使用三元运算符?

12 浏览
0 Comments

如何使用三元运算符?

我在$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
            },

0
0 Comments

很不幸,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`的变量时避免出现错误。

0
0 Comments

问题的原因是代码中的参数赋值使用了三目运算符,但是其中的条件判断部分重复了两次。

解决方法是使用逻辑或运算符(||)来替代三目运算符的条件判断部分。

以下是修改后的代码:

var paramId = $stateParams.processId || $stateParams.assessmentId;

使用逻辑或运算符的好处是,如果第一个参数的值为真,则直接返回第一个参数的值;如果第一个参数的值为假,则返回第二个参数的值。

这样可以避免重复判断参数的值,并简化代码逻辑。

0