JS中的数据类型

数据类型

var length = 11;// 数字
var lastName = "Gates";// 字符串
var cars = ["Porsche", "Volvo", "BMW"];// 数组
var x = {firstName:"Bill", lastName:"Gates"};// 对象 
字符串(String)

字符串(或文本字符串)是一串字符(比如 "qwer")。字符串被引号包围,可使用单引号或双引号。

<script>
	/*
	JS中创建字符串对象有两种方式,
	但是属性和函数都是通用的。
	*/
	var s = "第一种(小string)";
	alert(typeof s);//string
	
	var ss = new String("第二种(大string)");
	alert(typeof ss);//object
	/*----------常用函数----------*/
	var func = "JavaScript";
	//获取字符串长度
	alert(func.length);//10
	//返回某个指定的字符串值在字符串中首次出现的位置
	alert(func.indexOf("va"));//2
	//如果要检索的字符串值没有出现,则该方法返回 -1
	alert(func.indexOf("m"));//-1
	//判断字符串是否包含某个子字符串
	alert(func.indexOf("n") >= 0 ? "包含" : "不包含");//不包含
	//返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
	alert(func.lastIndexOf("ri"));//6
	//在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
	alert(func.replace("Java","Live"));//LiveScript
	//substr()和substring()的区别。
	//在字符串中抽取从start下标开始的指定数目的字符,stringObject.substr(start,length)
	alert(func.substr(4,6));//Script
	//提取字符串中介于两个指定下标之间的字符(不包含endIndex)。
	alert(func.substring(1,3));//av
</script>
数字(Number)

JavaScript 只有这一种数值类型。整数、小数、正数、负数、不是数字(NaN)、无穷大(Infinity (或-Infinity))都属于Number类型。

<script>
	/*
	数字和字符串相加
	JS的加法和级联(concatenation)都使用 + 运算符。
	数字用加法。字符串用级联。
	JS从左向右进行编译,
	在有+运算符的情况下,数字相加就是数字;
	但只要有字符串的参与,结果都是字符串级联。
	*/
	var x = 10;
	var y = 20;
	var z = "The result is: " + x + y;
	alert(z);//The result is: 1020
	
	/*
	从左到右运算时先算10+20,数字之间是加法,得30;
	遇到字符串“30”后用级联,所以是3030。 
	*/
	var t = "30";
	var result = x + y + t;
	alert(result);//3030
	
	/*
	在使用减(-)乘(*)除(/)运算符时,
	字符串拥有数字内容的话,会被转换成数字进行运算。
	*/
	var n = "10";
	var m = "20";
	var mn = (m-n)+(m/n)+(n*m)
	alert(mn);//212
	
	/*
	NaN属于JS保留词,指示某个数不是合法数。
	用一个非数字字符串进行除法会得到NaN(Not a Number)。
	*/
	var a = 11;
	var b = "aaa";
	alert(a / b);//NaN
	
/*--------------------数字方法--------------------*/
	
	/*全局JS函数isNaN()可以确定某个值是否是数*/
	alert(isNaN(b));//true(表示不是一个数字)

	/*全局JS函数parseInt,
	可以将字符串自动转换成数字,
	并且取整数位。*/
	alert(parseInt("3.999999"));//3
	
	/*全局JS函数parseFloat,
	可以将字符串自动转换成数字*/
	alert(parseFloat(3.2) + 1);//4.2
	
	/*函数Math.ceil,可以向上取整*/
	alert(Math.ceil(1.2));//2

/*--------------------数字方法--------------------*/
	
	/*在数学运算中使用NaN的话,结果也是NaN*/
	var nan = NaN;
	alert(a + nan);//NaN
	
	/*
	Infinity(或-Infinity)
	是JS在计算数时超出最大可能数范围时返回的值。
	除以0也会生成 Infinity。
	*/
	function inf(){
		var myNumber = 2;
		while (myNumber != Infinity) {
			myNumber = myNumber * myNumber;
		}
		return myNumber;
	}
	var inf = inf();
	alert(inf);//Infinity
</script>
布尔(Boolean)

1、布尔值只有两个值:true 或 false。
2、在Boolean类型中有一个函数:Boolean()。语法格式:
Boolean(数据)
Boolean()函数的作用是将非布尔类型转换成布尔类型,有东西就是true,没有就是false。

<script>
	var name = "";
	if(name){
		alert("欢迎你"+name);
	}else{
		alert("用户名不能为空!")
	}
</script>

在这里插入图片描述

数组(Array)

JavaScript 数组用方括号书写,数组的项目由逗号分隔。

对象(Object)

1、是所有类的超类,JavaScript对象用花括号来书写,对象属性是name:value对,由逗号分隔。

var person = {
	firstName:"Bill", 
	lastName:"Gates", 
	age:62, 
	eyeColor:"blue"};

2、Object包含属性有: prototype 属性、constructor 属性;方法有:toLocaleString 方法、toString 方法、valueOf 方法。
3、如何创建对象

<script>
	//如何创建对象
	function haha(){
		alert("haha");
	}
	//当做普通函数来调用
	haha();//haha
	//当做类来创建对象
	var obj = new haha();//haha
	alert(obj);//[object Object]
</script>

4、函数及扩展函数

<script>
	Haha = function(a,b,c){
		//声明属性
		this.no = a;
		this.name = b;
		this.age = c;
		//函数
		this.getAge = function(){
			return this.age;
		}
	}
	var u1 = new Haha(11,"zhangsan",20);
	var uage = u1.age;
	alert(uage);//20
	//可以通过prototype这个属性来给类动态扩展属性以及函数
	Haha.prototype.getNo = function(){
		return this.no;
	}
	//调用扩展的getNo函数
	var uno = u1.no;
	alert(uno);//11
	//给string扩展一个函数
	String.prototype.xixi = function(){
		alert("string扩展函数");
	}
	"aaa".xixi();//string扩展函数
</script>
空(Null)

1、在 JavaScript 中,null 是 "nothing"。它被看做不存在的事物。但是,在 JavaScript 中,null 的数据类型是对象。
2、可以把 null 在 JavaScript 中是对象理解为一个 bug。它本应是 null。
3、可以通过设置值为 null 清空对象(也可以通过设置值为 undefined 清空对象):

var person = null;// 值是 null,但是类型仍然是对象
alert(typeof null);//object

4、空值与undefined不是一回事,空的字符串变量既有值也有类型:

var car = "";// 值是 "",类型是 "string"
未定义(Undefined)

1、在JavaScript中,没有值的变量,其值是undefined。typeof 也返回undefined。
2、任何变量均可通过设置值为undefined进行清空。其类型也将是undefined:

person = undefined;// 值是 undefined,类型是 undefined

3、null、NaN、undefined

<script>
	alert(null == NaN);//false
	alert(null == undefined);//true
	alert(undefined == NaN);//false
</script>
JavaScript 拥有动态类型

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:

var x;               // x 为 undefined
var x = 5;           // 现在 x 为数字
var x = "John";      // 现在 x 为字符串
typeof 运算符

1、JS中有一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型。
2、typeof运算符的语法格式:
typeof 变量名
3、typeof运算符的运算结果是以下6个字符串之一,注意字符串都是小写(typeof运算符返回变量或表达式的类型。):
"undefined"、"number"、"string"、"boolean"、"object"、"function"

<script>
	function sum(a,b){
		if(typeof a == "number" && typeof b == "number"){
			return a + b;
		}
		alert("格式错误");
	}
	var value = sum(2,"abc");
	alert(value);
	//格式错误
	//undefined
			
	var value2 = sum(1,2);
	alert(value2);//3
			
	var q;
	alert(typeof q);//undefined
			
	var w = 11;
	alert(typeof w);//number
			
	var e = "abc";
	alert(typeof e);//string
			
	var r = null;
	alert(typeof r);//object
		
	var t = false;
	alert(typeof t);//boolean
				
	function mc(){}
	alert(typeof mc);//function
</script>
===运算符

当使用=== 相等运算符后,相等的数变为不相等,因为===运算符需要类型和值同时相等。

<script>
	var x = 500;             
	var y = new Number(500);
	var z = 500;
	alert(x === y);//false
	/*因为x和y的类型不同。*/
	alert(x === z);//true
</script>
原文地址:https://www.cnblogs.com/yu011/p/13549122.html