JavaScript
由于新公司前后端不分离,而且使用的自研框架,迫不得已又将快忘光了的JS再次梳理了一遍,在此分享给大家。
1.基础概念
-
JS中严格区分大小写。
-
JS中每一条语句以“ ; ”结尾。
–如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,而且有时候系统会加错分号,所以必须写。
-
JS中会忽略多个空格和换行,我们可以利用空格和换行对代码格式化。
2.基础数据类型
-
字面量:不可改变的值,如常量。可以直接使用,但一般不会直接使用。(Infinity,NaN)
-
变量:可以用来保存字面量,而且变量值可以改变,更加方便使用,所以开发使用变量保存字面量,很少直接使用字面量。
var ——> 声明变量
-
标识符:在JS中所有的可以我们自主命名的都可以称为标识符,例如:变量名,函数名,属性名……
标识符的命名需要遵循如下的规则:
- 标识符中可以含有字母、数字、_、$
- 标识符不可以数字开头
- 标识符不能是ES中的关键字或保留字
- 标识符一般使用小驼峰命名法
JS底层保存标识符时实际上是采用的Unicode编码,所以理论上讲,所有utf-8中含有的内容都可以用作标识符(包括中文)
-
数据类型:字面量类型,一共六种,包括String、Number、Boolean、Null、Undefined、Object
- String字符串:JS中使用字符串要用引号引起来,双引号单引号都可以,但是不能混用,引号不可嵌套,双中不可放双,单中不 可放单,但是双中单,单中双。字符串中可以使用\转义。
- Number:
- 在JS中所有数值都是Number类型,可以使用typeof运算符来检查一个变量的类型。
- JS可以表示数字的最大值,Number.MAX_VALUE(1.79 * 10 308),大于这个数值会显示Infinity,表示正无穷。Number.MIN_VALUE:大于零的最小值(-Infinty表示负无穷)。
- NAN是一个特殊的数字,表示Not a Number
- 在JS中整数的运算基本可以保持精确,计算浮点数可能得到一个不精确的结果,所以不要使用JS做精确计算
- Boolean 布尔值
- Null:Null类型的值只有一个null,表示一个为空的对象(typeof null :返回Object)
- Undefinied:当声明变量而不赋值时,他的值为undefined(typeof undefined :返回undefined)
- Object:对象
-
强制类型转换:类型转换主要指将其他数据类型转String,Number,Boolean
-
其他数据类型转String
- 调用被转换数据类型的toString()方法,该方法不会影响原值,会将转换结果返回(注意:null和undifined没有toString方法)
- 调用String()函数,对于Number和Boolean底层一样调用toString()方法,对于null和undefined会直接转化为字符串
- 加空串,底层是调用String()
-
其他转Number
-
使用Number()函数
- String
- 纯数字字符串 —— 数字
- 非数字内容 —— NaN
- 空串/空格 —— 0
- Boolean
- true —— 1
- false —— 0
- null —— 0
- undefined ——NaN
- String
-
专门对付字符串:其他都转化为NaN
- parseInt():字符串 —— 整数
- parseFloat():将一个字符串中有效小数内容取出来
-
JS中,如果要表示16进制的数字,则需要以0x开头。如果需要表示8进制数字,则需要以0开头,如果是要表示2进制数字,则要以0b开头,但不是所有浏览器都支持。
a = parseInt(a,10):以十进制解析
-
-
其他转Boolean
- 使用Boolean()函数
- Number:除了0和NaN为false,其他都为true
- String:除了空串为false,其他都为true
- null / undefined:都是false
- 对象:转为true
- !!a
- 使用Boolean()函数
-
3.运算符 / 操作符
-
+ :当对非number的类型的数值运算时,会转为数字运算(除字符串)。转换结果如Number()函数结果。
-
任何值做 - 、* 、/ 运算都会转化为Number
-
&&、||:对Boolean运算会转化为布尔值运算,返回原值(返回那个值与断路判断有关)
- 与运算
- 如果第一个值为false,返回第一个值
- 如果第一个值为true,返回第二个值
- 或运算:
- 如果第一个值为true,返回第一个值
- 如果第一个值为false,返回第二个值
- 与运算
-
关系符与非数值运算:
对于与非数值运算,先转为数值再运算:任何值与NaN做任何比较都为false,如果两侧都是字符串,不会转化成数值比较,而是比较字符编码,比较字符码是一位一位比较的。
-
在字符串中使用转义字符输入Unicode编码:\u四位编码(16进制)
-
undefined衍生自null,所以这两个值做相等判断为true,NaN不与任何值相等,包括他自己,可以用isNaN()判断
-
相等\不相等比较会将两者转为同一类型再比较:
- ===:全等比较
- !==:不全等比较
-
条件运算符/三元运算符:
语法:条件表达式 ?语句1:语句2
为true执行语句1,为false执行语句2,并返回结果
-
,运算符:用来分割多个语句,一般用来声明多个变量
-
运算符优先级:与(&)的优先级高于或(|)
-
语句:在JS中可以使用{}来为语句分组,同一个{}中的语句我们成为一组语句,他们要么都执行,要么都不执行,一个{}中的语句我们称为一个代码块。JS中的{}只有分组作用,内容完全可见。
4.对象
-
对象分类
-
内建对象:
由ES标准中定义的对象,在任何的ES实现从都可以使用:比如Math,String,Number,Boolean,Function,Object
-
宿主对象:
由Js的运行环境提供的对象,目前来讲主要指浏览器提供的对象,比如:BOM,DOM
-
自定义对象
我们自己定义的对象
-
-
创建对象:
var obj = ne