javascript的值与类型
来源:互联网 发布:c语言 新建文件追加 编辑:程序博客网 时间:2024/06/11 00:15
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的值与类型
- 值类型与引用类型 in JavaScript
- JavaScript中的值类型与引用类型
- JavaScript中的值类型与引用类型
- Javascript Date 类型的值传递与引用传递问题
- JavaScript变量类型:值类型与引用类型
- JavaScript的组成部分与原始类型
- 说说 JavaScript 基本类型值与引用类型值
- javascript 中的引用类型和值类型,复制与拷贝
- javascript基本数据类型与值类型引用类型说明
- $.post()的dataType类型参数与Javascript的eval()函数
- javascript变量值的类型和传递值的类型
- JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换
- Javascript的 抽象类、接口、多态与类型转换
- JavaScript数值与字符串类型转换的三种函数
- javascript 显示浏览器类型与操作系统类型
- javascript基本类型与引用类型
- 手把手教你在Photoshop中使用曲线工具
- Asm Shader Reference --- Shader Model 3.0 part
- 使用with...as....语法打开一个文件
- mac开发中,怎么用iTunes安装spa包
- Error:Execution failed for task ':zebradrive_sdk:clean'. > Unable to delete directory: D:\AndroidStu
- javascript的值与类型
- 疯狂JAVA讲义学习笔记4——面向对象1
- react native 定位
- 【Maven】添加ueditor到maven本地仓库
- 单片机上下拉电阻
- 【PL/SQL调试】SQL*Plus 或者 PL/SQL Developer查看存储过程编译错误
- hpu 问题 H: KACA的杨辉计数
- 运算符重载里面程序运行细节
- 铁流:中国突破半导体新工艺研发