@JS复习
-
JS字符串
用于存储和处理文本
可以使用索引来访问其中的字符
添加转义字符来使用引号
有内置属性length
字符串可以是对象,使用new创建,但尽量不要创建String对象,它会拖慢执行速度,并可能产生其它副作用
原始字符串没有属性和方法,因为它们不是对象,原始字符串可以使用JS的属性和方法,因为JS在执行方法和属性时可以把原始值当做对象
辨析==(等于)和===(绝对等于)的区别:
分为两种
1 在基础类型(String,Number等)中:
不同类型之间比较,(等于)是转化为同一类型后看值是否相等,(绝对等于)类型不同,就直接视为不等
同类型之间比较,两者一样
2 在高级类型(Array,Objext等)中:
两者没有区别,都是进行"指针地址"比较 -
JS运算符
注意数字与字符串相加,会进行自动类型转换,最终成为字符串 -
JS比较和逻辑元算符
&& || ! 和 三目运算符 -
JS if_else语句
-
JS switch语句
-
JS for循环
-
JS while循环
-
JS break和continue
以上均与其他语言类似 -
JS typeof,null和undefined
null表示一个空对象引用
undefined表示一个没有设置值的变量
typeof用来查看属性
需要注意以下:
typeof [1,2,3,4] //返回object,JS中数组和函数都是对象
typeof null //object,上面说了空对象引用
typeof undefined //undefined,没什么可说的,就是返回这个
typeof NaN //Number,NaN意思是Not a Number,但它本身是一个Number类型
null === undefined //false,由上辨析可知,类型不同
null == undefined //true,都表示空嘛,抽象上的值是相等的 -
JS类型转换
介绍一个属性constructor
这个属性返回所有JS变量的构造函数,比如:
“月下ctrlc”.constructor //返回String(){…}
其他类似
你可以使用这个属性来查看对象是否为数组(包含字符串’Array’),就像如下代码:
myArray.constructor.toString().indexOf(“Array”) > -1
同样,你可以使用这个方法判断其他对象自动转换类型
当JS尝试一个错误的类型时,会自动转换,比如:
5 + null //错误类型,JS会将null转成0,从而实现相加
5 + ‘1’ //类似,转成字符串,实现拼接自动转换成字符串
当你尝试输出一个对象或一个变量时,JS会自动调用其的toString()方法,比如:
myVar = {…} //变成"[object Object]"
= [1,2,3] //“1,2,3”
= 123 //“123”
= true //“true”
xx.innerHTML = myVar需要注意的转换:
原始值 | 转数字 | 转字符串 | 转布尔 |
---|---|---|---|
“0” | 0 | “0” | true(因为有长度) |
NaN | NaN | “NaN” | false |
Infinity | Infinity | “Infinity” | true |
-Infinity | -Infinity | “Infinity” | true |
“” | 0 | “” | false(空串长度为0) |
[] | 0 | “” | true(有地址) |
[10] | 10 | “10” | true |
[10,20] | NaN | “10,20” | true |
function(){} | NaN | “function(){}” | true |
{} | NaN | “[object Object]” | true |
null | 0 | “null” | false |
undefined | NaN | “undefined” | false |
不用死记硬背,理解,转换成数字的时候,仅包含数字的时候才能实现转换,否则就是NaN,当然有特例,NaN->NaN;""(空串)->0;[]->0;null->0,转换成字符串的时候,大多都是直接变,记住[]->""(空数组变成空串);{}->"[object Object]",转换成布尔值时,根据数据不同的类型判断即可,是字符串就判断其长度是否为0;是对象就判断其是否有地址(JS数组和函数均是对象),然后记住规定的null,NaN,undefined转成布尔值均为false