关于JS的数据类型的一些见解
关于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的数据类型的一些见解的更多相关文章
- JavaScript知识 一、JS的数据类型
一.JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined.他只有一个值:undefined.如果一个变量被定义但是没有给他赋值,那么这个时候系统会默认给这个变量赋值为u ...
- JS中数据类型及原生对象简介
js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器 ...
- 每日学习心得:Js基本数据类型常用方法扩展
2014-02-17 前言: 节后的第一周上班,整个状态调整的还不错,已完全进入正常的工作状态.这一周主要还是对年前项目存在的一些问题进行完善.修整,基本上没有做大的改动.这里就把项目中经常用到的一些 ...
- js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用
js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型 Number var a1 = 10; var a2 = 3.66; conso ...
- JavaScript笔记1———js的数据类型
JS的数据类型有: 1.数值类型(Number):js中所有数字均用浮点数字表示. 可以表示32位(即4字节)的整数,也可以表示64位(即8字节)的浮点数(小数). 也可以用二进制.八进制.十进制.十 ...
- js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题
js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...
- js的数据类型--字符串
js的数据类型——字符串 这篇我们来说说js的第二种数据类型——字符串. js的内置功能之一就是字符串拼接.如果将加号(+)运算符用于数字,表示两数相加.但将它作用于字符串,则表示字符串拼接,将第二个 ...
- js的数据类型--数字
近期做一些项目的时候发现,自己的js基础还是不够扎实,再看一遍犀牛书,加深自己的理解和印象.所以从这篇文章开始,后面都是关于原生js的一些内容. 这篇文章,我们具体介绍一下js的数据类型其中一种. j ...
- JS基本数据类型&流程控制
JS基本数据类型 number ----- 数值 boolean ----- 布尔值 string ----- 字符串 [x,y] -------数组 undefined ...
随机推荐
- array_diff的参数前后循序的区别
//如果两个参数之间有区别.array_diff会返回第二个参数的差值 $oldData = array(0=>'德国',1=>'deguo'); $newData = array(0=& ...
- xx.substring(x,x)和xx.index()
[转的]用一个例子解释: ip = "126.168.1.1"; i = ip.indexOf('.'); 这里默认从0开始找到 ...
- play for scala 通过网易smtp发送邮件
最近用play来做一个小项目,里面用到了发送邮件的功能.这里我将这部分抽出来分享,毕竟目前来看paly于scala方面的中文资料在网上还是毕竟少,希望我的这篇文章能为有需要的人提供一点思路. 下面写下 ...
- ASP.NET MVC 5 中 使用富文本编辑器 Ueditor
一.Ueditor插件下载自:http://ueditor.baidu.com/website/ 二.将解压文件目录ueditor复制到项目根目录后, 修改以下几个文件配置: 1.访问路径配置:ued ...
- resx文件在X64位编译,提示“未能加载文件或程序集”的问题?
原文:resx文件在X64位编译,提示"未能加载文件或程序集"的问题? resx文件在X64位编译,提示"未能加载文件或程序集"的问题? 解答: 错误现象如下 ...
- 使用paramiko模块远程登录并上传或下载文件
1.paramiko安装 1)安装PyCrypto2.6 for Python 2.7 64bit.地址:http://www.voidspace.org.uk/python/modules.shtm ...
- 盒模型中--border
三要素:宽border-width,形状border-style,颜色border-color <style> div{ width:300px; height:300px; backgr ...
- 原生js下拉菜单
var oDiv = document.getElementById("sunav"); var oLi = oDiv.getElementsByClassName("s ...
- 程序员遇到BUG的解释
开发应用程序是一项压力很大的工作,人无完人,工作中遇到bug是很正常的事,有些程序员会生气,沮丧,郁闷,甚至泄气,也有一些程序员则会比较淡定.如何进行修复bug的过程,是值得我们好好推敲的. 我想分享 ...
- mysql中engine=innodb和engine=myisam的区别
最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...