javascript之数据类型(一)

借鉴阮一峰前辈:http://javascript.ruanyifeng.com/grammar/types.html

查看MDN文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures

参考书籍:javascript高级程序设计第三版

注:本文记录个人学习所用,有错误恳请指出

一、简介

最新的 ECMAScript 标准定义了 7 种数据类型6种原始类型(undefined,null,number,string,boolean,symbol-es6新定义)+合成类型(object

二、null和undefined

作为两个原始类型,而且又很像……

相同点:

1.undefined和null在“==“相等运算符下返回true

console.log(undefined == null);//true

2.undefined和null在if()语句中,都会自动转为false

if(!undefined){console.log("undefined在if()中转为false!")}//undefined在if()中转为false!
if(!null){console.log("null在if()中转为false!")}//null在if()中转为false!

不同点:

1.(个人观点)undefined表示一个没有指向的指针,而null是一个指向一块内容为空的地方。

    var a;
    console.log(a);//undefined
    var b = 5;
    var c = b;
    console.log("b="+b+",c="+c);//b=6,c=5
    b = 6;
    console.log("b="+b+",c="+c);//b=6,c=5
    var d = null;
    console.log(d);             //null
    var e = {name:"wyc"};
    var f = e;
    console.log("e.name="+ e.name+",f.name="+ f.name);//e.name=wyc,f.name=wyc
    e.name = "wp";
    console.log("e.name="+ e.name+",f.name="+ f.name);//e.name=wp,f.name=wp
    delete e.name;
    console.log("e.name="+ e.name+",f.name="+ f.name);//e.name=undefined,f.name=undefined

这部分纯个人理解,有错误请指导

从该段代码可以看出:

(1)var a;声明变量不赋值,默认值位undefined,var d = null;声明赋值null,才是null

(2)在给变量赋值时。解释器会先确定这个值是基本类型值还是引用类型值

(3)复制变量值时,基本类型的值和引用类型的值都是复制一份到新变量分配的空间,只不过副本不同,一个是值,一个是指针,这导致,基本类型复制完全分离开来,而引用类型复制还通过副本指向同一个对象

2.检测类型不同

console.log(typeof null);   //object
console.log(typeof undefined);//undefined

补充:typeof操作符

因为javascript是松散型的,因此需要检测数据的类型——typeof

    console.log(typeof undefined);  //undefined
    console.log(typeof null);       //object
    console.log(typeof 1);          //number
    console.log(typeof "你好");      //string
    console.log(typeof true);       //boolean
    console.log(typeof []);         //object
    console.log(typeof {});         //object
    function add(a,b){return a+b;}
    console.log(typeof add);        //function

值得注意的就是null,和function,其他都是自己基本类型名;

3.Number()转换不同

console.log(Number(null));   //0
console.log(Number(undefined));//NaN

补充:

(1)NaN(not a number)是一个特殊的数值。

(2)任何带有NaN的操作都会返回NaN

(3)NaN和任何值都不想等,包括NaN本身。

(4)isNaN()检测是否是”非数值类型“;

转载于:https://my.oschina.net/wyc1219/blog/823585

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值