js的数据类型以及判断方法

最新的ECMAScript 标准定义了 7 种数据类型 :

  • 6 种原始类型 String、Number、Boolean、Null、Undefined、Symbol;1 种复杂的Object类型

原始类型:

字符串类型(String):

声明方式

var a = new String("123")  //  不推荐使用
// or
var a = "123" 

区别:

var a = new String("123"), a1 = new String("123") // 类型为Object
a == a1 // false
//使用new关键字的创建的是字符串对象,是放到堆栈里面的

var a = "123", a1 = "123" // 类型为String
a == a1 // true
//直接赋值的操作是创建了一个常量,放到常量池里面的,
数字类型(Number)

声明方式和区别跟字符串一样;

NaN非数字: 任何涉及到NaN的运算都会返回NaN、NaN不等于NaN;
isNaN()是用来判断是否是非数字 eq:

isNaN(123) // false
isNaN("123") // false
isNaN("hello") // true
布尔类型(Boolean)

表示一个逻辑实体,只有true 和 false两个值

Undefined类型(Undefined)

只有一个值undefined ;使用 var 和 let 声明了变量但未初始化值的时候,这个变量的值就是undefined

Null类型(null)

空指针对象,特指对象的值未设置

符号类型(Symbol)

符号(Symbols)是ECMAScript 第6版新定义的。符号类型是唯一的并且是不可修改的, 并且也可以用来作为Object的key的值

对象(Object)

对象是指内存中的可以被 标识符引用的一块区域; 就是引用类型

"标准的对象"

常用的就是Object实例化的对象
声明方式:

//使用new操作符和Object构造函数
var a = new Object; // 如果不传参数()可以省略
a.name = "张三"

//or对象字面量语法
var a = {
    “name”: "张三"
}

数组(Array)

声明方式:

var a = new Array(4) // 创建占据4个位置的空数组
a.length // 4

var a = new Array() // 创建一个空的数组
a.length // 0

var a = [], a = [12, 23, 34]
函数(function)

函数是一个附带可被调用功能的常规对象。

日期(Date)

创建本地时间的对象

js判断数据类型的方法

typeof 方法

注意:这个方法返回的都是字符串

let und;
let sym = Symbol("this is Symbol");
let date = new Date();
function name(){
    //code
}

typeof  "123" // "string"
typeof 123 // "number"
typeof und // "undefined"
typeof undefined // "undefined"
typeof true // "boolean"
typeof sym // "symbol"
typeof Symbol() // "symbol"
typeof name // "function"

typeof null // "object"
typeof [] // "object"
typeof {} // "object"
typeof date // "object"
instanceof 方法

用来判断已知是object类型的方法

var func = function () {
      // code....
}
var date = new Date();

[] instanceof Array // true
func instanceof Function // true
date instanceof Date // true
{} instanceof Object // true
[] instanceof Object // true   这就尴尬了。。。
对象上的toString方法 (适用与所有情况)

返回的是字符串

var getType = Object.prototype.toString

var func = function() { // code... } 
var sym = Symbol("this is symbol")
var date = new Date()

getType.call("aaa") // "[object String]"
getType.call(123) // "[object Number]"
getType.call(undefined) // "[object Undefined]"
getType.call(true) // "[object Boolean]"
getType.call(sym) // "[object Symbol]"
getType.call(null) // "[object Null]"

getType.call(func) // "[object Function]"
getType.call([1, 2, 3]) // "[object Array]"
getType.call(date) // "[object Date]"
getType.call({}) // "[object Object]"

可以封装成方法

var getType = Object.prototype.toString;
var judgeType = {
    isNull (e) {
        return getType.call(e) == "[object Null]";
    },
    isArray (e) {
        return getType.call(e) == "[object Array]";
    },
    isString (e) {
        return getType.call(e) == "[object String]";
    },
    isNumber (e) {
        return getType.call(e) == "[object Number]";
    },
    isSymbol (e) {
        return getType.call(e) == "[object Symbol]";
    },
    //......
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容