关于js里的数据类型这块,说下个人对它的一些见地

js中的数据类型可以归类两类,

简单数据类型:string,number,boolean,null,undefined

复杂数据类型:object

其实严格说:null是object类型

        alert(10 + ":" + typeof (10));//10:number
alert("abc:" + typeof ("abc"));//abc:string
alert("true:" + typeof (true));//true:boolean
alert("null:" + typeof (null));// null:object
alert("undefined:" + typeof (undefined));//undefined:undefined

1 各数据类型的默认空值:

string:null,

number:NaN

boolean:false

null:null

undefined:undefined

object:null

 var obj_str = null;//string的默认空对象
var obj_num=NaN;//number的默认空对象
var obj_bool = false;//boolean 的默认空对象

但是我们一般都是直接定义:

var obj_str, obj_num, obj_bool;

我们这样声明完了,虽然明白自己想要给他们赋予什么类型,可是为难了js了,js识别不出是什么类型的数据变量,所以 js索性丢一个undefined的默认值给他们。

所以,对于undefined我们可以理解成是:没有类型,也没有值的,说白一点儿就是在内存中根本就不给它分配位置,

undefined 也可以理解成对所有未知,不存在类型和值的对象的总称。

2.undefined和null的的区别:

我们先看一段代码:

  undefined == null ? alert(true) : alert(false);
//输出:true
undefined === null ? alert(true) : alert(false);
//输出:false

他们两个本身不一样, null就相当于 一个空箱子,而undefined 就相当于什么也没有

如果转化为同一个类型(我喜欢理解成忽略类型),来比较值的话,undefined和null的值是相等的,

undefined 是空对象,null是空值。

就相当于现在去掉类型,就相当于把箱子去掉,然后 他们两个都是什么也没有了,

咱们再看另外一段代码:

 undefined = 1 ? alert(true) : alert(false); 

运行了这行代码,会出现什么结果?

输出结果:true

如果你感觉有些吃惊的话,那你要认真接着看了,

在说上面为什么会输出true之前,我们再看一段代码:

 if (undefined = 1) {
alert(true);
}
else {
alert(false);
}

让大家失望了,我只是换了一个写法,这样能看得更明显一些:

输出true是因为 1 转化为boolean时为true,

但是,我想说的是:为什么 undefined=1 不报错呢?

原因是:undefined 虽然和 null他们归为一类,但是undefined可以赋值,

这里我参入一些我个人的看法:

undefined是js内置的空对象,这样,在给它赋值就显得理所当然了,

既然这样,null本身是一个空值,在内存中占据一格的值,那么我们如果给null赋值的话,会不会报错呢?我猜想会报错

带着这种猜想,我运行了下面的代码:

   null = 1 ? alert(true) : alert(false); //报错 

报错!

这也正证实了我们的猜想。

这些是我对js数据类型的一些浅显认知,望多多指教

关于JS的数据类型的一些见解的更多相关文章

  1. JavaScript知识 一、JS的数据类型

    一.JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined.他只有一个值:undefined.如果一个变量被定义但是没有给他赋值,那么这个时候系统会默认给这个变量赋值为u ...

  2. JS中数据类型及原生对象简介

    js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器 ...

  3. 每日学习心得:Js基本数据类型常用方法扩展

    2014-02-17 前言: 节后的第一周上班,整个状态调整的还不错,已完全进入正常的工作状态.这一周主要还是对年前项目存在的一些问题进行完善.修整,基本上没有做大的改动.这里就把项目中经常用到的一些 ...

  4. js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用

    js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型  Number var a1 = 10; var a2 = 3.66; conso ...

  5. JavaScript笔记1———js的数据类型

    JS的数据类型有: 1.数值类型(Number):js中所有数字均用浮点数字表示. 可以表示32位(即4字节)的整数,也可以表示64位(即8字节)的浮点数(小数). 也可以用二进制.八进制.十进制.十 ...

  6. js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题

    js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...

  7. js的数据类型--字符串

    js的数据类型——字符串 这篇我们来说说js的第二种数据类型——字符串. js的内置功能之一就是字符串拼接.如果将加号(+)运算符用于数字,表示两数相加.但将它作用于字符串,则表示字符串拼接,将第二个 ...

  8. js的数据类型--数字

    近期做一些项目的时候发现,自己的js基础还是不够扎实,再看一遍犀牛书,加深自己的理解和印象.所以从这篇文章开始,后面都是关于原生js的一些内容. 这篇文章,我们具体介绍一下js的数据类型其中一种. j ...

  9. JS基本数据类型&流程控制

    JS基本数据类型 number     -----  数值 boolean    -----  布尔值 string     -----  字符串 [x,y] -------数组 undefined  ...

随机推荐

  1. jquery选择伪元素属性的方法

    CSS伪元素不是DOM元素,因此你无法直接选择到它们 一个方法是为该元素添加新类,并通过设置新类的属性来达到改变伪元素属性的效果: .checkboxWrapper.selected::before{ ...

  2. Mac OS X 懒人版安装教程(之前的图全部挂了,所以重发了)

    请版主把我之前发的那个帖子删了!因为所有的图全部挂了,所以麻烦版主了…… 安装中出现五国的话就请进入这里看看是那里的错误http://bbs.pcbeta.com/viewthread-863656- ...

  3. 有return语句情况下,try-catch-finally的执行顺序

    重要结论: 1.不管有没有出现异常,finally块中代码都会执行 2.当try和catch中有return时,finally仍然会执行 3.finally是在return后面的表达式运算后执行的(此 ...

  4. Web标准和搜索引擎优化技术

    1.Web标准不是某一个标准,而是一系列标准的集合.出来网页内容之外,网页主要由三部分组成:结构(Structure).表现(Presenttation)和行为(Behavior).对应的标准也分三方 ...

  5. 在Win7系统中搭建Web服务器

    局 域网Web服务器的主要功能是实现资源共享,同时借助于局域网服务器访问页面可有效的实现信息的同步.利用Web服务器,我们随时随地都可以将自己的信息 上传到服务器端,让其它关注你的用户能在第一时间内了 ...

  6. 【翻译】How To Tango With Django 1.5.4 第五章

    5数据模型和数据库 一个模型就是一个描述你数据表的python对象.不用再通过SQL来操作数据库,而是使用python对象来操作数据库. 5.1rango要求 ...一个目录下面有多个下面 ...一个 ...

  7. IOS 单例模式的写法

    iOS的单例模式有两种官方写法,如下: 1)不使用GCD的方式 #import "Manager.h" static Manager *manager; @implementati ...

  8. KVC和KVO大优点

    都是动态的,运行时检查,给予了极大的方便

  9. java 使用 poi 解析excel

    背景: web应用经常需要上传文件,有时候需要解析出excel中的数据,如果excel的格式没有问题,那就可以直接解析数据入库. 工具选择: 目前jxl和poi可以解析excel,jxl很早就停止维护 ...

  10. bat批处理完成jdk tomcat的安装

    在完成一个web应用项目后,领导要求做一个配置用的批处理文件,能够自动完成jdk的安装,tomcat的安装,web应用的部署,环境变量的注册,tomcat服务的安装和自动启动 参考了网上很多的类似的批 ...