详解Js中的数据类型(一)

2018-08-11  本文已影响11人  Rainism_140d

整个Js可以简单理解为二个部分,数据部分,操作运算部分。

Js中数据类型分为:原始的数据类型   (由简单数据类型组成的)复杂数据类型;

原始数据类型:string(字符串) number(数值)  null(空值)  undefined(未定义或不存在)  boolean(布尔值)  symbol (es6);

复杂数据类型:object(对象)  简单说就是一组“键值对”的集合,一种无序的复合数据集合;

Js中判断数据类型的三种方法

typeof () 能分辨出7种数据类型,多用于简单数据类型的检验注:null与object为Object,函数为function,array为object ;

instanceof  () 数组 [ ],对象{ }用tyepof判断结果都是对象,instanceof 用于区分出数组与对象 ;

Object.prototype.toString ();调用Object的原型中的toString方法判断;


String 字符串

1、字符串可以用单引号和双引号表示(‘sky’或“sky”),如果引号中还要使用相同的引号,那么就要用转义符号(/)。

2、转义字符用来表示那些用一般字符不便于表示的控制代码

\0 :null(\u0000)

\b :后退键(\u0008)

\f :换页符(\u000C)

\n :换行符(\u000A)

\r :回车键(\u000D)

\t :制表符(\u0009)

\v :垂直制表符(\u000B)

\' :单引号(\u0027)

\" :双引号(\u0022)

\\ :反斜杠(\u005C)

3、字符串默认只能写在一行,如果多行转义即可,转义就是在需要在引号前放置 /;

在单行最后面添加 + 号与转义符号效果一样 ,var longString = 'Long '  + 'long '  + 'long '  + 'string';

es6中转义(在字符串开始前添加大键盘上1左边的的按键 ` )

es6转义

4、字符串可以视为字符数组,hello[1] 返回得是e,且不能修改。

5、String.length具有只读属性,不可修改。

6、base64转码

bota() 任意值转为Base64

atob()Base64编码转为原来的值


Number 数值

1、整数与浮点数,js中数值都是以64位浮点数形式存储。

2、NaN非数字,作用:字符串解析数字出现错误的场合 ,0/0为结果为NaN,NaN不等于任何值(包括其本身),且NaN属于number;

3.、正负0都相同

4 、lnfinity 无穷,这个数值有正负值,且相等,按照字面理解即可;

5、进制的展现

二进制:前缀 0b

八进制:前缀 0o00

十六进制:前缀0x0X

十进制: 无前缀

6、与数值相关全局方法

parselnt(参数)将字符串转为整数

参数不是字符串就先转成字符串再转数值

转换中碰到非数字后停止转换,返回转换好的

转换中碰到第一个就是字母,直接返回NaN

可以进行进制之间的转换

parseFloat()将字符串转为浮点数

参数不是字符串就先转成字符串再转数值

转换中碰到非数字后停止转换,返回转换好的

转换中碰到第一个就是字母,直接返回NaN;

isNaN()isNaN方法可以用来判断是否是NaN

判断NaN最好的方法,是利用NaN不等于NaN的性质;

isFinite( ) 返回一个布尔值,判断是否是正常的数值

正负无穷,NaN,undefined 都是false,其他都是true;


Object 对象

1、对象,简单说就是一组“键值对”的集合,一种无序的复合数据集合

2、对象的所有的键名都是字符串,没有引号或者数字都会转为字符串

3、键名不能以数字开头,如一定要那么就用引号包裹,否则报错

4、对象属性之间用逗号分隔,最后可以不加

5、可以先声明对象,然后再声明属性,不用同时创建

6、复杂类型的引用,是在内存中共用目标数据,修改目标数据中的内容,其他引用随即也被修改

7、原始类型的引用,各自在内存中开辟空间,各用各的

8、对象声明后不想给值,那么就赋值为null

9、非对象直接声明就好浏览器自动赋值 undefined

10、首行大括号,一律解释为语句

11、属性的读取三种, . 点;['key']; [表达式]

12、属性的赋值,点 .  和 [ ] 都行

13、查看一个自定义对象的所有属性,Object.keys(自定义变量名XXX)

14、delete删除对象的属性  delete 自定义对象.属性,无法删除继承属性


15、检查属性是否存在,属性 in 对象名无法分辨是否是继承的

16、属性遍历  for...in循环,会跳过不能遍历的属性,继承属性也会遍历

17、with 语句  

with(对象名){

  操作对象的属性 (可多个)

1、由于语句的作用域是当前作用域,如果语句中没有该key值,便会创建全局变量

2、从代码块来说,因为作用域是当前的作用域,语句中的key值可能是某个全局变量或者对象的属性,编译器无法预先编译,影响编译性能

优化方式

上一篇 下一篇

猜你喜欢

热点阅读