javascript - 我应该在函数中指定值类型吗? JavaScript/JQuery

标签 javascript jquery if-statement comparison equals

我已经阅读了很多关于 ===== 的内容,并且似乎 '===' 是可行的方法(至少是更推荐的),这也防止比较一些无效值。所以我有这样的功能:

$('#frm_filterby').on('change',changeAttr);
function changeAttr() {
    var elementVal = $(this).val();
    console.log(typeof elementVal) // outputs string
    switch(elementVal){
        case "1":
            $("#frm_search").attr({
                "type" : "text",
                "placeholder" : "Example: jcook56",
                "required" : true
            }).val("");
            break;
        case "2":
            $("#frm_search").attr({
                "type" : "email",
                "placeholder" : "example@gmail.com",
                "required" : true
            }).val("");
            break;
        case "3":
            $("#frm_search").attr({
                "type" : "number",
                "placeholder" : "Example: 103",
                "required" : true
            }).val("");
            break;
        default:
            $("#frm_search").attr({
                "type" : "text",
                "placeholder" : "Select Search Criteria",
                "required" : false
            }).val("");
    }
}

因此上面的函数使用 switch 语句 来检查用户选择的过滤器,并根据该结果设置 search 输入字段中的属性。所以我的问题是我应该使用 Number()parseInt() 并强制 elementValue 为数字,同时删除 case 语句值中的字符串和用数字替换它们?这会改变/阻止什么吗?另外,我想知道是否使用简单的 if/else 语句来完成相同的场景,其中我将使用 equal 这会是一个不错的选择吗?示例:

$('#frm_filterby').on('change',changeAttr); 函数changeAttr() { var elementVal = Number($(this).val()); console.log(typeof elementVal)//输出数字

    if(elementValue === 1)
            $("#frm_search").attr({
                "type" : "text",
                "placeholder" : "Example: jcook56",
                "required" : true
            }).val("");
            break;
    }else if(elementVal === 2){
            $("#frm_search").attr({
                "type" : "email",
                "placeholder" : "example@gmail.com",
                "required" : true
            }).val("");
            break;
    }else if(elementVal === 3){
            $("#frm_search").attr({
                "type" : "number",
                "placeholder" : "Example: 103",
                "required" : true
            }).val("");
            break;
    }else{
            $("#frm_search").attr({
                "type" : "text",
                "placeholder" : "Select Search Criteria",
                "required" : false
            }).val("");
    }
}

我读了几篇文章,他们建议在比较值时使用 === ,因此在我的例子中,元素值作为字符串出现在函数中。在这种情况下,我必须将值转换为数字,以便使用 === 进行比较。如果有人对此有任何想法,请告诉我。

最佳答案

switch 情况相当于 ===。如果不是,这会起作用:

switch ( 1 ) {
    case '1':
        console.log('hi')
}

elementVal 转换为数字不会有任何区别。您的 if/else 版本在功能上也是相同的(尽管 break 语句不执行任何操作)。

关于javascript - 我应该在函数中指定值类型吗? JavaScript/JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51329473/

相关文章:

c++ - 速记 c++ if else 语句

java - 使用 while 循环根据收到的参数调用方法?

Javascript 最佳实践 : handling Firebug-specific code

jquery - 在 Flux/React.js 中,在哪里初始化 jQuery 插件?

javascript - 两个流程调用Ajax方法,其中一个在最后需要额外处理

javascript - 将这个简单的 Javascript 转换为 PHP

javascript - JSON 到数组 - 如何解析这样的结构?

javascript - KnockoutJS 单击绑定(bind)从未被调用

javascript - javascript 中的切换属性(attr)

javascript - 在按钮悬停时淡入和淡出背景图像