javascript的值与类型

原创 2017年01月03日 22:58:56

javascript的值与类型

/**

 * 主题

 * 1、typeof的用法

 * 2、基本类型,引用类型有哪些

 *    如何判断基本类型和引用类型简单判断

 *

 * 3、instanceof的用法

 * 4、Object.prototype.toString完成类型的判断

 * 5、如何区别数组类型和对象类型

 * 6、NaN

 * 7、undefined和null

 */

 

/*1、typeof

用法1 typeof value === 'xxx';

用法2 typeof( value ) === 'xxx';

*/

// 所有的typeof的测试结果返回的是一个字符串

console.log( typeof( typeof( 1 ) )  );//'string'

 

/*2、引用类型和基本类型*/

// 基本类型

console.log( typeof 1  );//'number'

console.log( typeof '1'  );//'string'

console.log( typeof true  );//'boolean'

console.log( typeof undefined  );//'undefined'

console.log( typeof NaN  );//number

 

// 引用类型

// {} 和 []返回的结果都是object,所以typeof并不能区分两者

console.log( typeof []);//'object'

console.log( typeof {});//'object'

console.log( typeof function(){} );//'function'

 

// 小测试

console.log( typeof 1.2);// 'number'  证明js中并没有浮点型的类型

console.log( typeof null );// 'object' null可能是引用类型

console.log( null === null );// true  null可能是基本类型,所以用typeof判断null的类型不靠谱

console.log( typeof {} );// 'object'

console.log( {} === {} );// false 引用类型的不会等于和自身类似的相等,这里相当于 new Obejct() === new Object()

 

 

/*

3、instanceof的用法

主要用于实例和构造函数之间的判断

*/

 

/*基本值的检测*/

console.log( 1 instanceof Number );// false

console.log( '1' instanceof String );// false

console.log( true instanceof Boolean );// false

console.log( null instanceof Object);// false

console.log( undefinedinstanceof Object );// false

 

 

/*引用类型的检测*/

console.log( []instanceof Array);// true

console.log( {}instanceof Object );// true

console.log( function(){} instanceof Function );// true

 

/*将基本值转换成对象后 instanceof操作就起判断类型的作用了*/

console.log( 1instanceof Number );// false  因为此时的1是一个基本类型,而非一个数值类对象

console.log( new Number(1) instanceof Number );//true  此时的1被转换成数值对象了

console.log( 1 === 1 );//true

console.log( 1 === new Number(1) );//false

console.log( new Number(1) === new Number(1) );//false

// 这里可以解释'abc'.length 'abc'明明只是一个基本类型,为什么能够访问到length属性呢?原因只可能是在调用length属性之前,'abc'被隐式转化成字符串对象,只有对象才会有方法和属性

 

 

/*{}和[]通过instanceof的结果*/

console.log({} instanceof Object);//true

console.log({} instanceof Array);//false;

console.log([] instanceof Object);//true

console.log([] instanceof Array);//true

// 还是不能使用instanceof进行类型的区别

 

/*4、Object.prototype.toString.call进行类型的判断*/

// 即使你传入一个基本类型去调用toString方法,也会返回对应的值类型回来

console.log(Object.prototype.toString.call( 1));//'[object Number]'

console.log(Object.prototype.toString.call( 1.2));//'[object Number]'

console.log(Object.prototype.toString.call( '1'));//'[object String]'

console.log(Object.prototype.toString.call( true));//'[object Boolean]'

// 可以利用这个特性进行数组和对象两者之间的区分

console.log(Object.prototype.toString.call( []));//'[object Array]'

console.log(Object.prototype.toString.call( {}));//'[object Object]'

 

console.log(Object.prototype.toString.call( function(){} ));//'[object Function]'

console.log(Object.prototype.toString.call( null));//'[object Null]'

console.log(Object.prototype.toString.call( undefined));//'[object Undefined]'

 

/*5、如何区别数组类型和对象类型*/

function isArray(a){

if(Array.isArray){//es5提供的原生判断方法

return Array.isArray(a);

}else{

Object.prototype.toString.call(a) === '[object Array]';

}

}

 

/*6、NaN*/

console.log(NaN === NaN);//false;

function isReallyNaN(v){

return (v === v) === false;

}

var res = isReallyNaN(NaN);

console.log(res);//true

 

// js原生的isNaN函数在判断之前会将参数值先进行一次隐式转换,所以用isNaN来进行判断并不靠谱

console.log(isNaN('xxx'));//true

 

/*7、undefined和null*/

var a ;//变量在声明的时候默认值为undefined

console.log(a);//undefined

 

console.log(typeof undefined);//undefined

console.log(typeof null);//object

 

console.log(Object.prototype.toString.call(undefined));// [object Undefined]

console.log(Object.prototype.toString.call(null));// [object Null]

 

// null到底是不是基本类型

console.log(undefined instanceof Object);//false

console.log(null instanceof Object);//false 证明null是属于基本类型

console.log(null.constructor);// undefined 证明null不是引用类型

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JavaScript权威指南 第三章 类型 值和变量

Javascript的数据类型分为两类:原始类型()
  • lxhjh
  • lxhjh
  • 2014-09-02 01:44
  • 607

JavaScript中的七种值类型与typeof运算符

打算从基础开始复习JavaScript, 顺便分享总结一下自己学过的知识内置类型JavaScript中有七种内置类型,包括六种基本类型和一种引用类型 基本类型number(数字) string(字符...

JavaScript Study 2(类型、值和变量)

JavaScript数据类型分为:原始类型(数字、字符串、布尔值和特殊值【null、undefined】)和对象类型(Object,键值对组成)。JavaScript中,同时使用了字符串和数字,数字将...

JavaScript语言核心(一)——类型、变量和值

JavaScript语言核心(一)——类型、变量和值 知识点: 1. JS的类型分类:基本类型、对象类型。 2. 基本类型:数字、文本、布尔值、null、undefined 3. 对象类型:全局对象、...

《JavaScript权威指南》学习笔记——类型,变量与值

1.数字1.1 整型直接量(1)不区分整数值与浮点数值,所有数字均用浮点数值表示。(2)能识别十六进制(0xff=256)(3)某些实现允许采用八进制(0377=255)。ES6中,八进制严格禁止。1...

javascript类型、值和变量

数字不可变对象:Number 3.1.1 整型直接量 javascript采用IEEE 754标准定义(二进制计算法,实数计算结果会无限接近期望值)的64位浮点格式表示数字 支持十进制和十六进制(0x...

[译]JavaScript:如何判断值的类型

原文:http://www.adobe.com/devnet/html5/articles/categorizing-values-in-javascript.html 本文中,我将会解释Jav...

javascript学习笔记—判断值和函数的类型

New Document /* 五种基本数据类型: number:数值 string:字符串 boolean:布尔 null:空 un...

JavaScript类型、值和变量2

数字:和其他编程语言不同(如C/Java),JavaScript是不区分整数值和浮点数值,JavaScript中的所有数字均用浮点数值表示。按照JavaScript中的数字格式,能够表示的整数范围是-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)