大家好,我是IT修真院成都分院第07期学员,一枚正直善良的web程序员。
1.背景介绍
javascript是一门面向对象的弱类型语言,最新的 ECMAScript 标准定义了 7 种数据类型分别为:字符串、数字、布尔值、数组、对象、Null、Undefined。
2.知识剖析
字符串
字符串值是一个由零或多个 Unicode 字符(字母、数字和标点符号)组成的链表。 使用字符串数据类型表示 JavaScript 中的文本。 在脚本中包含字符串,方法是使用单引号或双引号将其括起来。
被单引号引起的字符串内可以包含双引号,而被双引号引起的字符串内也可以包含单引号。
实例:
var answer="Nice to meet you!";
var answer="He is called 'Bill'"; //双引号包含单引号
var answer='He is called "Bill"'; //单引号包含双引号
数字
在 JavaScript 中,整数值和浮点值之间没有区别:JavaScript 数字可以是两种类型中的任意一种(在内部,JavaScript 作为浮点值表示所有数字)。
整点数
整数值可以是正整数、负整数和 0。
浮点数
浮点值可以是带有小数部分的整数。
实例:
var x1=34.00; //使用小数点来写
var x2=34; //不使用小数点来写
极大或极小的数字可以通过科学(指数)计数法来书写:
var y=123e5; // 12300000
var z=123e-5; // 0.00123
布尔值
虽然字符串和数字数据类型实际上可以有无限多个不同的值,但布尔值数据类型只能有两个值。 它们是文本 true 和 false。
实例:
var x=true;
var y=false;
数组
数组用来在单独的变量名中存储一系列的值。
我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 myArray 的数组对象:
var myArray=new Array(); //定义一个名字为myArray的数组
有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。
1:
var mycars=new Array(); //定义一个名字为myArray的数组
mycars[0]="Saab"; //数组第一个值为Saab
mycars[1]="Volvo"; //数组第二个值为Volvo
mycars[2]="BMW"; //数组第三个值为BMW
也可以使用一个整数自变量来控制数组的容量:
var mycars=new Array(3); //定义一个名字为myArray的数组,数组中有3个值
mycars[0]="Saab"; //数组第一个值为Saab
mycars[1]="Volvo"; //数组第二个值为Volvo
mycars[2]="BMW"; //数组第三个值为BMW
2:
var mycars=new Array("Saab","Volvo","BMW"); 定义一个名字为myArray的数组,数组的值分别是Saab、Volvo、BMW
对象
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...(万物皆对象)
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型。
创建对象有两种方法:
1.定义并创建对象的实例
2.使用函数来定义对象,然后创建新的对象实例
篇幅有限,这里就只讲下创建直接的实例(第二种方法详见:http://www.w3school.com.cn/js/js_objects.asp),这个例子创建了对象的一个新实例,并向其添加了四个属性:
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 + "
"); //输出变量car,应该显示Volvo
var car=null; //把null赋值给变量car
document.write(car + "
"); //输出变量car,应该显示null
undefined
如果使用的对象属性不存在,或使用的是已声明但未赋值的变量,undefined 值将被返回。
一个未初始化的变量的值为undefined,一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined。
你可以使用严格相等运算符来判断一个值是否是undefined:
var x;
if (x === undefined) {
// 执行到这里
}
else {
// 不会执行到这里
}
3.常见问题
Javascript数据类型的判断
举一个栗子,在登陆页面的中账号只能输入手机号码不能输入其他字符,怎么样判断输入字符的数据类型?
4.解决方案
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 除了可以判断数据类型还可以判断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
5.编码实战
数据类型的转换:将数字转换成字符串
提示:全局方法 String() 可以将数字转换为字符串。
var x = 123;
document.getElementById("demo").innerHTML =
String(x) + "
" + // 将变量 x 转换为字符串并返回
String(123) + "
" + // 将数字 123 转换为字符串并返回
String(100 + 23); // 将数字表达式转换为字符串并返回
显示效果
123
123
123
6.拓展思考
其他数据类型如何进行转换?
7.参考文献
《Javascript DOM 编程艺术》
w3c:http://www.w3school.com.cn/js/js_datatypes.asp
http://www.runoob.com/js/js-tutorial.html
8.更多讨论
by:刘夏阳
鸣谢 : 李玺 | somebody