发表于: 2017-03-30 23:31:11
1 473
【JS-01】JS数据类型
小课堂【武汉第116期】
分享人:赵灵杰
目录
1.背景介绍
“数据类型”在数据结构中的定义“一个值的集合以及定义在这个值集上的一组操作”。在编程语言中,能够表示并操作的值的类型称做数据类型。 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6新增第七种 Symbol 一种数据类型,它的实例是唯一且不可改变的。类型的值)
2.知识剖析
字符串
字符串值是一个由零或多个 Unicode(统一码) 字符(字母、数字和标点符号)组成的链表。 使用字符串数据类型表示 JavaScript 中的文本。 在脚本中包含字符串,方法是使用单引号或双引号将其括起来。 被单引号引起的字符串内可以包含双引号,而被双引号引起的字符串内也可以包含单引号。
实例:
var answer="Nice to meet you!";
var answer="He is called 'Bill'"; //双引号包含单引号
var answer='He is called "Bill"'; //单引号包含双引号
数值 NUMBER
整数 VAR X=1 //整数通过十进制,八进制等的字面值来表示 ;
浮点数 VAR X=3.14 //数值中必须包含一个小数点,且小数点后必须有一位数字
在JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
容易造成混淆的是,某些运算只有整数才能完成,此时JavaScript会自动把64位浮点数,转成32位整数,然后再进行运算,参见《运算符》一节的”位运算“部分。
注意:由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
实例: (0.3 - 0.2) === (0.2 - 0.1)//false
极大或极小的数字可以通过科学(指数)计数法来书写:
var y=123e5; // 12300000
var z=123e-5; // 0.00123
布尔值
虽然字符串和数字数据类型实际上可以有无限多个不同的值,但布尔值数据类型只能有两个值。 它们是文本 true(真) 和 false(假)。
实例:
var x=true;
var y=false;
对象
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...(万物皆对象)
对象是带有属性和方法的特殊数据类型。
创建对象有两种方法:
1.定义并创建对象的实例
2.使用函数来定义对象,然后创建新的对象实例
篇幅有限,这里就只讲下创建直接的实例对象。((object)是JavaScript的核心概念,推荐:http://javascript.ruanyifeng.com/grammar/object.html),这个例子创建了对象的一个新实例,并向其添加了四个属性:
person=new Object(); //定义一个名为person的对象
person.firstname="Bill"; //对象firstname属性值为Bill
person.lastname="Gates"; //对象lastname属性值为Gates
person.age=56; //对象age属性值为56
person.eyecolor="blue"; //对象eyecolor属性值为blue
替代语法(使用对象 literals):
person={firstname:"John",lastname:"Doe",age:56,eyecolor:"blue"};
NULL
null 数据类型在 JavaScript 中仅具有一个值:null。null 关键字不能用作函数或变量的名称。
null用来表示空值,即没有对象被呈现,可以通过将变量的值设置为 null 来清空变量:
var car="Volvo"; //把字符串Volvo赋值给变量car
document.write(car + "<br>"); //输出变量car,应该显示Volvo
var car=null; //把null赋值给变量car
document.write(car + "<br>"); //输出变量car,应该显示null
UNDEFINED
如果使用的对象属性不存在,或使用的是已声明但未赋值的变量,undefined 值将被返回。
一个未初始化的变量的值为undefined,一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined。
你可以使用严格相等运算符来判断一个值是否是undefined:
var x;
if (x === undefined) {
// 执行到这里
}
else {
// 不会执行到这里
}
3.常见问题
怎么样判断值的数据类型?
4.解决方案
好用的TYPEOF
typeof可以解决大部分的数据类型判断,是一个一元运算,typeof运算符可以返回一个值的数据类型,可能有以下结果。
var a="string"; console.log(typeof a); //string
var a=1; console.log(typeof a); //number
var a=false; console.log(typeof a); //boolean
var a; console.log(typeof a); //undfined
var a = null; console.log(typeof a); //object
var a = document; console.log(typeof a); //object
var a = []; console.log(a); //object
var a = function(){}; console.log(typeof a) //function 除了可以判断数据类型还可以判断函数类型
这样一来就很明显了,除了前四个类型外,null、对象、数组返回的都是object类型;对于函数类型返回的则是function。
然后这里就可以再引申出另一个灰常热门并且解决方法已普遍存在的问题,如何判断数据是个数组类型?
js判断数组类型的方法(这里只说一种最简单的方法):
instance,故名思义,“实例”,所以instanceof 用于判断一个变量是否是某个对象的实例,是一个三元运算---和typeof最实质上的区别 a instanceof b?alert("true"):alert("false") //注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array:
var a=[];
console.log(a instanceof Array) //返回true
6.拓展思考
如何将字符串转换为数字
更多请参考:http://www.runoob.com/js/js-type-conversion.html
7.参考文献
w3c:http://www.w3school.com.cn/js/js_datatypes.asp
微软Javascript开发者文档:https://msdn.microsoft.com/zh-cn/library/7wkd9z69(v=vs.94).aspx
重点推荐:Javascript标准参考(阮一峰)
8.更多讨论:判断数据类型还有没有更多方法?
评论