ECMAScript有5种基本数据类型 Undefined、Null、Boolean、Number 和 String。
- Undefined类型
- 未声明、声明但未初始化的变量typeof判定数据类型的时候都是 undefined
- 声明但未初始化的变量可以对其进行undefined值类型可以执行的操作
- 未声明的变量对其使用非赋值操作都会出错
var JsTest=function(){ var str; console.log(str==undefined);//true console.log(str);//undefined // str1=9+str; console.log(str1)//Uncaught ReferenceError: str1 is not defined // 数据类型判断 console.log(typeof str);//undefined console.log(typeof str1);//undefined
};
2.Null类型
- null表示一个空的对象指针,用于初始化空对象变量
- null是object的一个派生,typeof返回object
var JsTest=function(){ var oj=null; console.log(typeof oj);//object console.log(typeof null);//object console.log(null==undefined);//true };
3.Boolean类型 (true、false)
var JsTest=function(){ //1、布尔类型只有两个值 true和false //2、其它类型的值可以转换成布尔值(转换规则见下表) //转换方式:判断语句隐式转换 var str="hello world!" if (str) { console.log("true");//输出true,说明条件成立 } //通过Boolean函数显示转换 console.log(Boolean(str));//输出true };
数据类型 | 转换为true | 转换为false |
Boolean | True | false |
String | 非空字符串 | 空字符串 “” |
Nbmber | 非零数字值 | 0和NaN |
Object | 任何非空对象 | null |
undefined | / | undefined |
4.Number类型
var JsTest=function(){ // 整数 var num1=10;//十进制 var num2=07;//八进制 var num3=0xf;//十六进制// console.log(+0==-0);//true, +0和-0是相等的 // 浮点数(保存浮点数的内衬空间是保存整数的两倍) var numFloat=1.2;//小数点后面必须有一个有效的整数,不然会被ECMAScript自动化整 // 数值范围//console.log(Number.MIN_VALUE);//5e-324 最小值//console.log(Number.MAX_VALUE);//1.7976931348623157e+308 最大值// 超出数值范围 +Infinity(正无穷) -Infinity(负无穷)var a=Number.MAX_VALUE+1;var b=Number.MIN_VALUE+Number.MAX_VALUE;console.log(a+2);//输出还是最大值,在增加也不会变化console.log(b);//输出:1.7976931348623157e+308console.log(Number.MIN_VALUE-1);//输出:-1,这里有点搞不懂// 数值超出有效范围之后在进行计算是无意义的// 判断一个值是否超出数值表示范围:console.log(isFinite(a));//true// NaN非数值// 处理数值操作时出现的特殊情况 console.log(10/"d");//NaN console.log(NaN+10);//NaN 有NaN参与的计算都返回NaN console.log(NaN==NaN)//false 不能判等感觉有点方 console.log(isNaN(10/'a'));//true 判断是否是NaN};
5.String 类型
var JsTest=function(){ // 定义方式 var str="JavaScript"; var str1='hello world!'; console.log(str);//JavaScript console.log(str1);//hello world!//字符串拼接console.log(str+","+str1+"!");//JavaScript,hello world!!//字符长度属性console.log(str.length);//10 ,字符中的空格也算,有字符字面量也算var str2="hello你 好!\n";console.log(str2.length);//10中文字符也按字数算长度};
基本类型的特点
1.基本数据类型是按值访问的,操作的实际是保存在变量中的值。
2.给基本类型设置属性和方法是不允许的。
var name='jay';name.len=3;console.log(name.len);//undefined
3.一个基础类型变量给另外一个变量赋值的时候,只是单纯的值赋值,赋值之后两个变量完全独立互不影响。
var num1=10;var num2=num1;num2+=15;console.log(num1);//10console.log(num2);//25
4.函数传参的时候,基本类型也是按值传递的,只进行简单的值复制。
检查数据类型
对于基本数据类型使用typeof操作符可以检测出来
var num1=10;var str="ssss";var tag=true;var num;var car=null;var obj=new Object();console.log(typeof num1); //numberconsole.log(typeof str);//stringconsole.log(typeof tag);//booleanconsole.log(typeof num);//undefinedconsole.log(typeof car);//objecconsole.log(typeof obj);//object