严格的比较在生产环境中没有产生预期的结果,但是在本地服务器上效果很好

问题描述 投票:0回答:2

我目前在javascript中使用严格的===比较,该比较会在我的计算机上按要求产生预期结果,但是当部署到服务器时,它不会表现出不同的效果。

脚本

computed: {
            type: function(){
                switch(this.job.type)
                {
                    case 1:
                        return 'Request Quote';
                    case 2:
                        return 'Negotiate';
                    case 3:
                        return 'Fixed';
                    default:
                        return 'matched none';
                }
            },
}

模板

<p class="text-primary"><strong>{{type}}</strong></p>

在本地服务器上输出[[作业类型为2

Image showing Negotiate on Local Server

生产服务器上的输出,用于[[作业类型为2

Image showing matched none on Production Server

如果我将代码切换为松散的比较If语句,则效果很好

如果语句

computed: { type: function(){ if(this.job.type == 1) return 'Request Quote'; else if(this.job.type == 2) return 'Negotiate'; else if(this.job.type == 3) return 'Fixed'; else return 'matched none'; }, }

在生产服务器中的结果enter image description here

您可能已经注意到,我正在使用VUEJS框架,工作对象也是用axios提取的数据库模型。我还在后端使用Laravel。

MySQL版本可能有问题吗?

在本地计算机上运行的版本

Image showing MYSQL server version on Local Machine

正在生产的版本enter image description here

javascript mysql vue.js switch-statement laravel-5.5
2个回答
0
投票
object(而不是原始)或某种其他类型的对象,这些对象被强制转换为数字时将强制转换为您的期望值之一。

带有字符串的示例:

function strict(type) { switch(type) { case 1: return 'Request Quote'; case 2: return 'Negotiate'; case 3: return 'Fixed'; default: return 'matched none'; } } function loose(type) { if(type == 1) return 'Request Quote'; else if(type == 2) return 'Negotiate'; else if(type == 3) return 'Fixed'; else return 'matched none'; } var n; console.log("Number:"); n = 2; console.log("strict", strict(n)); console.log("loose", loose(n)); console.log("String:"); n = "2"; console.log("strict", strict(n)); console.log("loose", loose(n));

0
投票
我建议您使用Typescript或Flowtype以避免这些检查。
© www.soinside.com 2019 - 2024. All rights reserved.