起因:关于数据类型这块,自己看了很多遍相关的资料,每次查看和实践都有一些体会和理解;但又感到没有理解透,总是差一点,最近又在看这块的内容,加上最近的积累,做个相关笔记
ECMAScript数据类型:
1. 5中简单数据类型:String Number Boolean Undefined Null
2. 1种复杂数据类型:Object,本质是一组无序的名值对组成的,eg:Array JSON ...
【理解】对于JS数据方面的操作,都是数据类型之间的转换和操作,只要针对的攻克每一种数据类型,在逐步的融合,JS水平会有一个很好的进步;
typeof操作符
1. 这是个操作符,不是方法
2. 之所以typeof存在,是因为ECMAScript是松散类型的语言;松散类型就是变量可以是任意数据类型,可以任意转换(不推荐)
typeof(String) => string => 如果这个值是字符串typeof(Number) => number => 如果这个值是数值typeof(Boolean) => boolean => 如果这个值是布尔值typeof(Undefined) => undefined => 如果这个值未定义typeof(Object) => object => 如果这个值是对象或nulltypeof(Function) => function => 如果这个值是函数
一、 Undefined类型
当【声明】一个变量,但是【未初始化】,这个变量的值就是undefined
一直以来的困惑:
1. 对【未初始化】的变量执行typeof操作符,返回undefined值
2. 对【未声明】的变量执行typeof操作符,返回undefined值
var message;console.log(typeof message); // undefinedconsole.log(typeof age); // undefined
困惑:导致自己一直不知道该怎么解决这个问题,书上标注的解决办法是:显式的使用undefined来给没有初始化的变量进行赋值,每次实践的结果和书上说的有出入
感悟:自己刚刚结合了jQuery上的$.type()的工具函数,和自己写的一些例子
var message;// jQuery中$.type()工具函数console.log($.type(message)); // undefinedconsole.log($.type(age)); // 【报错】age is not defined// 自己理解写的例子console.log(message==undefined); // trueconsole.log(age==undefined); // 【报错】age is not defined
所以,无论从$.type()的角度看,验证结果;还是从例子中查看结果,都可以看出,对于【未声明】和【未初始化】分离和验证都不是难题;
【注】对于$.type()的原理实现,是否是我例子中的方法,我还没有验证;当然这不是重点,重点是,妈妈再也不担心我分不清【未声明】和【未初始化】了;
【项目中】在实际的项目中,肯定是不允许有报错行为的,这样大大的影响了程序的进一步运行;所以,用下面这种方式:
var message;// jQuery中$.type()工具函数console.log($.type(message)); // undefinedtry{ console.log($.type(age)); // 不报错了}catch(e){ console.log("age is not defined!");};// 自己理解写的例子console.log(message==undefined); // truetry{ console.log(age==undefined); // 不报错了}catch(e){ console.log("age is not defined!");};
原标题:javascript数据类型理解整理
关键词:JavaScript