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

时间:2018-07-13 16:33:57

标签: 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 statement来检查用户选择的过滤器,并以此为基础来设置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("");
    }
}

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

1 个答案:

答案 0 :(得分:1)

switch的情况等同于===。如果没有,那将起作用:

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

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