导入js文件
<script…/>属性
defer:推迟脚本执行。(在HTML页面整个载入后再执行导入的 js 脚本)
async:异步执行脚本。(浏览器默认从上到下解析HTML页面元素,即先导入js文件再 解析后面的页面内容。async会使其同时执行)。
定义变量
直接赋值或用var定义都可。
类型转换
自动类型转换:
- 对减号运算符,因为字符串不支持减法运算,所以系统自动将字符串转换成数值。
- 对加号运算符,因为字符串可用加号作为连接运算符,所以系统自动将数值转换成字符串,并将两个字符串进行连接。
强制转换类型:
- toString():将布尔值、数值等转换成字符串。
- parselnt():将字符串、布尔值等转换成整数。
- parseFloat():将字符串、布尔值等转换成浮点数。
变量作用域
在javascript中,只有在函数中用 var 定义的变量才是局部变量,其他都是全局变量。
变量提升
javascript的变量提升机制:在函数体中,不管在那儿定义了变量,代码被执行时总会将变量声明提升到函数顶部(只提升变量声明,不提升赋值部分)。
等同于
新增的let变量
- let变量只在块内有效(包括循环体、函数)。
- let定义的全局变量不会变成window对象的属性,window.name访问无效。
- let定义的变量不会提前装载。(即不会变量提升)
const定义常量
const MAX = 120;
基本数据类型
- 数值类型:包含整数或浮点数。(支持科学计数法,十六进制、八进制)
- 布尔类型:只有true和false两个值。
- 字符串类型:必须用引号括起来,单引号、双引号都行。
- undefine类型:专门用来确定一个已经创建但是没有初值的变量。
- null类型:用于表明某个变量的值为空。
Infinity和-Infinity,NaN
当数值变量超出了其表数范围时,会出现 Infinity(正无穷大) 和 -Infinity(负无穷大)
- Infinity和-Infinity 进行算术运算时,结果会是NaN 。
- Infinity和-Infinity 与其他普通数进行算术运算时,结果依然是无穷大。
- Infinity和-Infinity 可以进行比较运算。
NaN也是一个特殊值,他表示非数。
- 0除0,两个无穷大运算,NaN参与的运算 都得NaN 。
- NaN不与任何数相等,包括它本身。只能用 isNaN() 函数判断变量是否为 NaN 。
undefined和null
undefined:该值用于表示没有为某个变量分配值,也用于表示对象的属性不存在。
null:用于表示变量值为空
复合类型
复合类型是由多个基本数据类型组成的数据体,JavaScript中的复合类型大致有3种:
- Object:对象
- Array:数组
- Function:函数
数组
javascript 的数组有如下3个特征:
- 同一个数组中的元素类型可以不相同。
- 数组长度可变。
- 访问数组时不会产生数组越界,访问并未赋值的数组元素时,其值为undefined 。
javascript 数组作为栈使用的两个方法如下: - push(ele):元素入栈,返回入栈后数组的长度。
- pop():元素出栈,返回出栈的数组元素。
javascript 数组作为队列使用的两个方法如下: - unshift(ele):元素入队列,返回入队列后数组长度。
- shift():元素出队列,返回出队列的数组元素。
运算符
- 赋值运算符:=
- 算术运算符:+,-,*,/
- 位运算符:& 按位与,| 按位或,~ 按位非
- 加强的赋值运算符:赋值运算符可与算术运算符、位运算符等结合,成为功能更强大的运算符。
- 比较运算符:>,<,>=,<=,!=, !==
- 逻辑运算符:&&,||,!
- 三目运算符:5>3? true:false
- 逗号运算符:逗号运算符允许将多个表达式排在一起,整个表达式返回最右边的值。
- void运算符:用于强行指定表达式不会返回值。
typeof 和 instanceof
typeof 用于判断某个变量的数据类型。即可作为函数使用如 typeof(a),也可作为运算符使用如 typeof a 。
instanceof 用于判断某个变量是否为指定类的实例。
alert(a instanceof);
语句
语句块
语句块就是使用花括号包含的多个语句,语句块是一个整体的执行体。如下:
{
a=1;
b=Math.PI;
alert("hello");
}
空语句
最简单的空语句只有一个分号,主要用于没有循环体的循环。
异常抛出语句
javascript 支持异常处理,支持手动抛出异常,javascript 的所有异常都是Error 对象。javascript 中总是通过throw 语句抛出异常。``
throw new Error(errorString);
javascript 既允许在代码执行过程中抛出异常,也允许在函数定义中抛出异常。
异常捕捉语句
程序出现的异常都可以用 catch 捕捉。一旦出现异常,程序就跳转到对应的 catch 块。语法格式如下:
try{
statements
}
catch(a){
statements
}
finally{
statements
}
javascript 异常体系远不如java 丰富,无需使用多个catch 块,catch 块只有一个。finally块可以省略,但一旦指定就必须执行。
with 语句
with 语句是一种简洁的写法,可以避免重复书写对象。语法格式如下:
with(object)
{
statements
}
流程控制
分支
分支语句主要有 if 语句和 switch 语句。
if 语句:
if()
{
statement...
}
else if()
{
statement...
}
else
{
statement...
}
switch 语句语法格式如下:
switch(wxpression)
{
case condition 1:statement(s)
break;
case condition 2:statement(s)
break;
.....
case condition n:statement(s)
break;
default: statement(s)
}
while 循环
while 循环语法格式:
while(expression)
{
statement
}
先判断expression逻辑表达式的值,当expression为true时,执行循环体,为false时结束循环。
do while 循环
do while 循环先执行循环体,然后判断循环条件,如果循环条件为真,执行下一次循环,否则循环终止。
do{
statement...
}while(expression);
for 循环
for 循环是更简洁的循环语句,大部分情况下,for 循环可以替代 while 循环、do while 循环。语法格式如下:
for(initialization;test condition;iteration statement)
{
statements
}
for in 循环
for in 循环本质是一种 foreach 循环,主要有两个作用:
- 遍历数组里的所有数组元素
- 遍历javascript 对象的所有属性
语法格式如下:
for(index in object)
{
statement...
}
break 和 continue
break 和 continue 都可以终止循环。continue 只是终止本次循环,接着开始下一次;break 则是完全终止整个循环,完全跳出循环体本身,执行后面的代码。
break 和 continue 可以添加标签,使用标签后则直接跳出标签所在循环。效果同上。