javascript-数据类型(三)

javascript数据类型

文章目录

      • javascript数据类型
      • 一.6大数据类型
      • 二.简单数据类型
        • 1.string
        • 2.number
          • 2.1 相关方法函数
            • 2.1.1 isNaN() 判断值是否为NaN,返回布尔值
            • 2.1.2 parseInt() 解析字符串,并返回一个整数
            • 2.1.3 parseFloat() 解析字符串,并返回一个浮点数
            • 2.1.4 Number.toFixed(n)
        • 3.boolean
        • 4.undefined
        • 5.null
      • 三.复杂数据类型
        • 1.object
      • 四.typeof操作符
        • 1."string" 值是字符串
        • 2."boolean" 值是布尔值
        • 3."number" 值是数值
        • 4."undefined" 值未定义
        • 5."object" 值是对象,数组或null
        • 6."function" 值是函数
        • 7.面试中的typeof
          • 7.1 typeof null
          • 7.2 typeof NaN和Infinity
          • 7.3 typeof typeof typeof 1和typeof (typeof 1)
          • 7.4 typeof Object
      • 五,扩展
        • 1.null和undefined区别
          • 1.1 undefined
          • 1.2 null
          • 1.3 本质区别
          • 1.4 总结

一.6大数据类型

ECMAScript中有5种基础数据类型和一种复杂数据类型. 基础类型有:string , number, undefined, null, boolean. 复杂类型是:object

二.简单数据类型

1.string

string 类型,值为字符串 ,js中使用双引号或单引号表示字符串

var str1='123';
var str2="abc123";

2.number

number类型,值为数字,js中number类型包括整形,浮点型和非数值

NaN即非数值,是number类型中的一个特殊值

NaN用于表示本来要返回一个数值的操作数,结果为返回数值的情况

比如(‘a’-1) (‘b’-2)

//number 数字类型:整数、小数、正数、负数、NaN
var num1=123;
var num2=123.45;
var num3=-123;

NaN(特殊的number类型)有两个特点:

1.任何涉及NAN的操作都会返回NAN

2.NAN与任何值都不相等,包括它本身

2.1 相关方法函数
2.1.1 isNaN() 判断值是否为NaN,返回布尔值
console.log(isNaN('123'))  //false
console.log(isNaN('123a')) //true

可以判断是否为纯数字,若不为纯数字,返回true

2.1.2 parseInt() 解析字符串,并返回一个整数

规则:从前到后,解析,遇到非数字则停止,截取前面所有的数字

console.log(parseInt('123a'));  //123  
console.log(parseInt('a123'));  //NaN
2.1.3 parseFloat() 解析字符串,并返回一个浮点数

规则:从前到后,解析,遇到非数字,点号,则停止,截取前面所有的数字,浮点,若点号后面没有数字,则省略点号

console.log(parseFloat('123.23a')); //123.23
console.log(parseFloat('12a3.23')); //12
console.log(parseFloat('a123.23')); //NaN
console.log(parseFloat('123.a23')); //123
2.1.4 Number.toFixed(n)

可以把Number四舍五入保留n位小数,返回字符串

var num=20;
console.log(num.toFixed(2)); //20.00

var num=20.2334;
console.log(num.toFixed(2)); //20.23

3.boolean

布尔类型,值为布尔值,boolean类型有2个值:true和false

4.undefined

undefined类型,表示值未定义,undefined类型只有一个特殊值为:undefined

var a;若不给初始值,则为undefined;

var a;
var b=undefined;
console.log(a); //undefined
console.log(b); //undefined

5.null

null类型,表示空,null类型只有一个特殊值为:null

如果变量准备在将来用于保存一个对象,那么该变量最好初始化为null

console.log(null == undefined); //true ECMA规定的
console.log(null === undefined); //false ECMA规定的

三.复杂数据类型

1.object

复杂数据类型:object类型,值为对象类型

js中, { }表示对象,[ ] 表示数组, function 表示函数,这些都是对象类型

var obj1=[1,2,3];
var obj2={
    'name':'zhangsan'
};
var obj3=function(){};

//对象,数组,函数,都是对象类型

四.typeof操作符

typeof操作符返回一个用来表示数据类型的字符串,注意typeof运算之后的结果都是字符串类型的

注意:typeof是一个操作符,不是一个函数!

typeof 运算符返回 变量(数据)的数据类型的字符串(6种)

1.“string” 值是字符串

2.“boolean” 值是布尔值

3.“number” 值是数值

4.“undefined” 值未定义

5.“object” 值是对象,数组或null

6.“function” 值是函数

var num=123;
var str="123";
var boo=true;
var und=undefined;
var arr=[];
var obj={};
var nul=null;
var fun=function(){};

console.log(typeof num); //"number"
console.log(typeof str); //"string"
console.log(typeof boo); //"boolean"
console.log(typeof und); //"undefined"
console.log(typeof arr); //"object"
console.log(typeof obj); //"object"
console.log(typeof nul); //"object"
console.log(typeof fun); //"function"

7.面试中的typeof

经常在面试中遇到typeof的题,可能觉得比较怪异,实际上,都是为了考察typeof的运用,但是无论如果都会只返回上面的6种情况

7.1 typeof null
console.log(typeof null); //"object"

null表示一个空对象指针,typeof null值时会返回object的真正原理

7.2 typeof NaN和Infinity
console.log(typeof NaN); //"number"
console.log(typeof Infinity ); //"number"

NaN和Infinity都是number类型

7.3 typeof typeof typeof 1和typeof (typeof 1)
console.log(typeof  typeof typeof 1); //"string"
console.log(typeof (typeof 1));       //"string"
7.4 typeof Object
console.log(typeof Object); //function

Object是一个构造函数

五,扩展

1.null和undefined区别

面试中,经常会遇到这个问题,面试官会问null和undefined的区别是什么?其实这个问题回答起来,可深可浅.面试官想知道的是你对这两个原始数据类型的区别理解和使用场景

null和undefined都是javascript中的两种特殊的原始数据类型个,它们都只有一个值,对应null和undefined,这两种又有不同的语义和场景,又表现出相似的行为.

console.log(null == undefined); //true ECMA规定的

undefined值是派生自null的,ECMA-262规定 ==相等运算符测试相等性要返回true

console.log(null === undefined); //false ECMA规定的

严格相等符也就是全等,它俩是不相等的,因为全等符没有类型转换,undefined和null属于不同类型,所以===要返回false

1.1 undefined

undefined,字面的意思就是:未定义的值,表示缺少值,意思就是此处应该有一个值,但是还没有定义

undefined典型的用法是:

  • 变量声明了,但是没有赋值时,就是undefined
  • 调用函数时,该提供的参数没有提供,该参数就等于undefined
  • 对象没有赋值的属性,该属性的值为undefined
  • 函数没有返回值时,默认返回undefined
  • 使用void表达式求值(ECMA规定,void操作符对任何表达式求值都是undefined)
//变量声明了,但是没有赋值时,就是undefined
var a;
console.log(a);//undefined

//调用函数时,该提供的参数没有提供,该参数就等于undefined
function fn(a){
    console.log(a);//undefined
}
fn();

//对象没有赋值的属性,该属性的值为undefined
var obj=new Object();
console.log(obj.a);//undefined

//函数没有返回值时,默认返回undefined
function fn(){
    //实际上,这里return undefined;
}
console.log(fn());

//使用void表达式求值(ECMA规定,void操作符对任何表达式求值都是undefined)
console.log(void 0);//undefined
console.log(void false);//undefined
console.log(void []);//undefined
console.log(void null);//undefined
1.2 null

null表示一个空对象指针,这也就是当我们使用typeof null值时会返回object的真正原理

表示一个对象被人为的重置为空对象,而非一个变量最原始的状态

null的典型用法:

  • 如果变量准备在将来用于保存一个对象,那么该变量最好初始化为null
  • 对象原型链的终点(声明原型链的终结 Foo.prototype = null)
  • 作为函数的参数,表示该函数的参数,不是对象
1.3 本质区别
  • null表示一个值被定义了,定义为"空值"
  • undefined 表示根本不存在定义
1.4 总结

undefined表示一个变量自然的,最原始的状态值,而null则表示一个变量被人为的设置为空对象,而不是最原始的状态,所以我们在使用过程中,一般我们是不需要显示把一个变量设置为undefined,因为对于未经初始化的值默认就会取undefined值,字面值的undefined主要用于比较 ,正式区分null和undefined(ECMA-262 第三版之前没有undefined这个值),第三版之后,引入这个值就是为了区分空对象指针和未经初始化变量的

你可能感兴趣的:(JavaScript)