JavaScript②数据类型
栏目: JavaScript · 发布时间: 7年前
内容简介:JavaScript②数据类型
ECMAScript中有5种简单的数据类型,也成为基本数据类型;Undefined、Null/Boolean/Number/String。还有一种复杂的数据类型,Object(还有一种特殊的Function)object本质是由一组无序的键值对组成的;
typeof操作符
- console.log(typeof qqqq);//undefined,这个变量没有定义;
- console.log(typeof (222));//number,是一个数字; typeof是操作符而不是方法,所以后面可以加()也可以不加;
- console.log(typeof “222”);//string,是一个字符串
- console.log(typeof false);//boolean,是一个布尔值
- console.log(typeof {});//object 是一个对象
- console.log(typeof null);//objecy 是一个对象,在javascript里,null是一个空指针;
- console.log(typeof function(){});//function,是一个方法,也是属于object类型的;js里万物皆对象
从技术的角度上将,函数在ECMAScript中是对象,不是一种数据类型,属于对象,在就是里万物皆对象的,但是,函数也确实有一些特殊的属性,因此通过typeof操作符来区分也是有必要的;
typeof检测任何数据,返回的都是一个字符串,两次和两次以上的连续typeof结果肯定都是string;
null和undefined
-
null
- 逻辑上null表示一个空对象的指针
- 使用typeof检测的时候会返回object;(null是object原型的终点)
-
undefined
- 使用var声明变量但没有初始化
- 区分空对象指针与尚未定义的变量
- 对未初始化的变量以及未声明的变量使用
- typeof运算符均会返回undefined;
-
undefined和null的关系;是undefined派生自null;因为undefined派生子null;所以Null和undefined做比较的时候是true;但是null和undefined和别的人和类型比较都不想等;
- undefined派生子null,因此在使用”==”进行比较的时候会返回true;
- 没有必要将变量显示声明undefined;
- 声明非空对象对应将其赋值为null;比如做定时器的时候用;
Undefined只有一个值,就是特殊的undefine;(大写的Undefined是代表Undefined类的意思,就好比人类和人的关系;)
var test1; var test2=undefined; console.log(test1==undefined);//true,变量声明了,但是没有定义; console.log(test1=="undefined");//false,"undefined"是一个字符串,含有undefined的字符;而不是undefined类型; console.log(test2==undefined);//true,变量声明了,但是没有被定义,undefined是变量的默认值;我们声不需要显示的把某个变量设置为undefined,因为没有赋值的变量,默认就是undefined;可以试验下,这里的两个等于号和三个等于号的区别,2个是比较(会隐式转换类型,===是不转化类型的,是绝对相等)
console.log(test1);//undefined console.log(test2);//undefined console.log(test3);//Error,报错了; Uncaught ReferenceError: test3 is not defined;
对于尚未声明的变量,只能执行一项操作,就是typeof检测其数据类型;
String
字符串的特性
- 由0个或多个16位unicode字符组成;
- 单引号和双引号都可以;但是单引号和双引号不能交叉使用;(放在引号内的任何东西都是属于字符串,即使里面没有东西或者空格,都属于合法的字符串 )
- 使用.length属性可以访问字符串的长度
- 转义序列表示一个字符
- 无法精确返回双字节字符长度
-
字符串一旦被创建,其值是不能改变的,若要改变必须销毁原有字符串,然后用另一个包含新值的字符串填充改变量;
转义序列(仅作了解); - \n 换行,常用的,这个需要记住;
- \斜杠\ 常用
- \’单引号 常用
-
\”双引号 常用
-
\t 制表符
- \b 空格
- \r 回车符
- \f 分页符
- \xnn 十六进制,n代表0-F
- \unnnn 以十六进制代码表示一个unicode字符
类型转换
- toString():转换为字符串
var is = true; is.toString(); //"true" var num = 10; num.toString(); //"10" num.toString(2); //"1010" (二进制) num.toString(8); //"12" (八进制) num.toString(16); //"A" (十六进制)
- String()
null和undefined没有toString方法,所以转换的时候用String()函数。如果值是null,则返回”null”,如果值是undefined则返回”undefined”。
var value1 = 10; var value2 = null; var value3; String(value1); //"10" String(value2); //"null" String(value3); //"undefined"
Number
var intNum = 55; //整数 var octalNum = 0o70; //八进制 以 0o开头 var hexNum = 0xAA; //十六进制 var floatNum = 1.1; //浮点数 var floatNum1 = 1. //解析为整数1 var floatNum2 = 10.0 //解析为整数10 floatNum = 3.125e7; //e表示法
数值范围
- 最小值 Number.MIN_VALUE
- 最大值 Number.MAX_VALUE:
-
超出范围
-
正无穷
- Infinity
- Number.POSITIVE_INFINTY
-
负无穷
- -Infinity
- Number.NEGATIVE_INFINITY
-
缺陷
- 无法参与下一次计算
-
检测方法,用isFinite
- 超出范围 false
-
合法范围true
NaN
-
正无穷
含义
- Not a Number
- 非数值
特点
- 任何涉及NaN的操作都将返回NaN
- NaN与任何值值都不相等包括其自身
NaN / 5 // NaN NaN == Nan // false
检测 isNaN
- 可以转换为数值,为false
- 不能转换为数值,为true
isNaN(NaN) // true isNaN(10) //false isNaN("10") //false isNaN("blue") //不能转换为数值 true isNaN("true") // false
数值转换
有三个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()。Number()可以用于任何数据类型,后面两个函数只能用于把字符串转换成数值。
Number()
Number()的转换规则如下:
- Boolean转换为数值的时候true转为1,flase转为0;
- null转换为数值的时候 转换为0
- undefined转换为数值的时候 转为NaN
-
string转换为数值的时候
- 如果只包含数字,转为十进制数,前导0被忽略(“011”转为11)
- 如果包含有效浮点格式,转为浮点数值,忽略前导0
- 包含有效十六进制格式;相同大小的十六进制整数
- 空字符串转为0;备注:””是空字符串 “ “这个就不是空字符串了
- 其他格式字符串NaN
- Object 调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果是NAN,则调用对应的toString()方法,然后再次依照前面的规则转换返回的字符串值;
console.log(Number("hello word"));//NaN console.log(Number(""));//0 console.log(Number("000011"));//11 console.log(Number("true"));//NaN console.log(Number(true));//1
parseInt()
parseInt参数
- 参数1、要解析的字符串 - 参数2、转换时所使用的基数;为了消除在使用parentInt函数时可能导致的格式,第二个参数可以指定要解析的基数,16就是十六进制;一般不传第二个参数
console.log(parseInt("AF"));//NaN,默认十进制解析的 console.log(parseInt("AF",16));//175
parseFloat()
- 从第一个字符开始解析
- 遇到无效浮点格式后结束
- 只有第一个小数点有效
- 忽略前导0
- 十六进制始终为0
- 没有小数点或小数点后全0;转换为整数
parseFloat("1234blue"); //1234 parseFloat("0xA"); //0 parseFloat("22.5"); //22.5 parseFloat("0908.5"); //908.5 parseFloat("2.125e4"); //21250
Boolean
- true为真,flase为假(false是布尔值,而Flase只是标识符);通常用在if/else的判断语句中(通常还会配合逻辑与&&,逻辑或||来完成)
- true不一定=1;flase不一定=0;
- 使用boolean()进行转换;任何数据类型的值调用Boolean()函数,都会返回一个Boolean值;也可以用(!/!!来转换)
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符 | “”空字符串 |
Number | 任何非零数值 | 0和NaN |
Object | 任何对象 | null |
Undefined | 无 | undefined |
Object
定义
一组数据或功能的集合
声明
- Var o=new Object()//Object后面的()可以省略,但不推荐
- Var o={}
属性和方法
- constructor:保存用于创建当前对象的函数,构造函数就是Object()
- HasOwnProperty(propertyName) 检测给定输定在当前对象实例中是否存在(而不是实例的原型中)
- isPrototypeOf(object) :检测传入的对象是否是另一个对象的原型(而不是在实例中);
- propertyIsEnumerable(propertyName);检测给定属性是否能用for-in语句每句来枚举;
- toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应;
- toString() 返回对象的字符串表示
- valueOf() 返回对象的字符串,数值或布尔值表示;通常与toString()的值相同;
- 在ECMAScript中,Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法;方法的具体原理,后面数据类型和原型链中具体说;
- BOM/DOM中的对象,都是属于宿主对象,因为他们是由宿主实现提供和定义的,但是ECMAScript不负责定义宿主对象,因此宿主对象可能会也可能不会继承Object;
以上所述就是小编给大家介绍的《JavaScript②数据类型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【数据类型】js的数据类型
- Python中不可变数据类型和可变数据类型
- 重学JS: 数据类型及类型检测
- JS专题之数据类型和类型检测
- 6. Go 语言数据类型:字典与布尔类型
- Redis 入门-数据类型:3 种特殊类型详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Effective Engineer
Edmond Lau / The Effective Bookshelf, Palo Alto, CA. / 2015-3-19 / USD 39.00
Introducing The Effective Engineer — the only book designed specifically for today's software engineers, based on extensive interviews with engineering leaders at top tech companies, and packed with h......一起来看看 《The Effective Engineer》 这本书的介绍吧!
UNIX 时间戳转换
UNIX 时间戳转换
RGB CMYK 转换工具
RGB CMYK 互转工具