1. 程式人生 > >js 判斷變數型別(完整版),包括ES6 新型別Symbol

js 判斷變數型別(完整版),包括ES6 新型別Symbol

歡迎來到Altaba的部落格...

相信大家在開發中遇到需要判斷變數型別的問題,js變數按儲存型別可分為值型別和引用型別,值型別包括Undefined、String、Number、Boolean,引用型別包括object、Array、Function,具體差距請參閱本人另一部落格

直接上辨別型別的封裝函式

function varType(n) {
        var typeStr = Object.prototype.toString.call(n);
        //var typeOfName = (typeof n);
        var typeName = '';
        switch (typeStr){
            case '[object String]':
                typeName = 'string';
                break;
            case '[object Number]':
                typeName = 'number';
                break;
            case '[object Boolean]':
                typeName = 'boolean';
                break;
            case '[object Undefined]':
                typeName = 'undefined';
                break;

            case '[object Object]':
                typeName = 'object';
                break;
            case '[object Array]':
                typeName = 'array';
                break;
            case '[object Null]':
                typeName = 'null';
                break;
            case '[object RegExp]':
                typeName = 'RegExp';
                break;

            case '[object Symbol]':
                typeName = 'symbol';
                break;
            case '[object JSON]':
                typeName = 'json';
                break;
            case '[object Math]':
                typeName = 'math';
                break;

            default:
                typeName = 'object';
        }

        return typeName;
    };


    console.log(varType("1"));
    console.log(varType(1));
    console.log(varType({}));
    console.log(varType([]));
    console.log(varType(function () {}));
    console.log(varType(null));
    console.log(varType(undefined));
    console.log(varType(true));
    console.log(varType(NaN));
    console.log(varType(Symbol()));

    console.log(varType(JSON));
    console.log(varType(Date));
    console.log(varType(Math));
    console.log(varType(RegExp()));