整个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
八进制:前缀 0o或00
十六进制:前缀0x或0X
十进制: 无前缀
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值可能是某个全局变量或者对象的属性,编译器无法预先编译,影响编译性能
优化方式:
网友评论