JS基础
defer(延迟脚本)和async(异步脚本)区别:当把script的标签放在头部时,都是延迟加载,立即执行。但是async不保证按顺序加载。使用async是不让页面等待脚本的加载和执行,从而异步加载页面的其他内容。
xhtml,可扩展超文本标记语言,是将html基于XML的应用而重新定义的一个标准。严格版的html。
数据类型
js中变量类型分为两大类。基本数据类型和引用类型。基本数据类型指值直接保存在变量本地的类型。引用类型变量中实际保存的是实际数据所在的地址值。
js中有5种简单数据类型(基本数据类型):Sting Boolean Undefined Null Number,1种复杂类型Object类型。
使用typeof操作符检测变量的基本类型,返回undefined number string boolean object function。对未声明的变量执行typeof也会返回undefined
使用instanceof检测引用类型的值。
Boolean
调用Boolean()时,0 NAN null undefined 空字符串都会转换成false
Number
把非数值转换为数字的函数:Number() parseInt() parseFloat()
Number(x) VS parseInt(str)
Number(x)只认识纯数字组成的字符串,可转bool类型,可将空字符串转换为0
parseInt(str)认识包含非数字字符的字符串开头位置的数字,parseInt转不了bool,将空字符串转换为NaN
String
Sting() VS toString()
toString()对null和undefined这两个值无效,String()是万能的,转换规则,先查看值是否有toString()的方法,有就调用该方法,并返回相应结果。如果值是null就返回null,如果值是undefined就返回undefined
Object
对象就是一组数据和功能的集合。
valueOf():返回对象的字符串,数组,布尔值表示。通常与toString()方法的返回值相同
操作符
一元操作符(只能操作一个值的叫做一元操作符。)
1.递增递减操作符
++a VS a++
++a/--a是执行前置递增递减操作时,变量的值时在语句被求值以前改变的。
var age = 18
var newAge = ++age + 2
alert (age) //19
alert (newAge) //21
a++/a--变量的值是在语句求值之后改变的。
var num1 = 2
var num2 = 10
var num3 = num1-- + num2 //12
var num4 = num1-- + num2 //11
2.加减操作符
与数学书上讲的完全一样,➕放在数值前面,对数值不会有任何影响。一元减操作符主要用于表示负数。
var num = 10
num = -num //-10
位操作符
按位非/按位与/按位或/按位异或
- 按位非(~)本质操作数的负值减1
var num1 = 25
var num2 = ~num1 //-26
- 按位与(&) 都是1结果才是1 ,任何一个为0结果都是0
var num1 = 25 & 3
alert(num1) //1
- 按位或(|)其中任何一位是1就是1,两个位都是0的情况下才返回0
var num1 = 25 | 3
alert(num1) //27
- 按位异或(^)其中一个是1才返回1,两位都是1或者0则返回0
var num1 = 25 ^ 3
alert(num1) //26
布尔操作符
逻辑与(&&)/逻辑或(||)/逻辑非(!)
短路逻辑:第一个值可以决定结果,就不会对第二个数求值了。
关系操作符
> <= >= < >
相等操作符
==(强制转型) ===(类型值必须相等)
null == undefined //true
null === undefined //false
条件操作符
三目运算 var a = (num1 > num2) ? num1 : num2
赋值操作符
+= -= *= /= %=
语句
if else
do while(至少执行一次)/while/for/for in(遍历枚举对象的属性)
continue(跳出本轮循环,继续下一轮)/break(彻底打破循环跳出)
switch case default(当case表达式里都不匹配时,自动执行default,相当于else)
函数
封装了一段任务的步骤清单的代码段,再起一个任务名。函数是一个引用类型的对象。
不支持重载,但是可以模拟重载。函数return返回后后续代码不会执行。函数中传入的参数arguments是类数组对象,可以访问arguments.length