JS是什么?
- JavaScript的简写。
- 客户端(浏览器)脚本,服务器端的脚本叫Node.js
- 可以给静态页面添加动态属性,如:修改样式,添加事件。
- 由来:NetSpace => LiveScript,后来与Sun公司有合作,借助Java做推广,将名字改为JaveScript
JS引入方式
- 方式1:通过页面任意位置的script标签,标签中就可以书写JS代码
- 方式2:通过script标签加载外部的JS文件
- 方式3:设置元素的特定属性或添加特定事件
变量定义
- 数字:number,整数、浮点数
- 布尔:boolean,true/false
- 字符串:string,单引号、双引号都行,’+'可以进行拼接
- 数组:array,可是使用[]或new Array()进行定义
- 空类型:null,只有一个值,类型名仍然是object
- NaN:not a number,不是一个数字,类型任然是object
- 判断是不能使用’=='进行判断,使用函数isNaN进行判断
- 未定义:undefined
- 定义变量不赋值,使用对象不存在的属性
- 直接判断时与undefined进行比较,类型判断是需要与字符串
- 对象:
- 方式1:先创建对象,然后添加属性和方法
- 方式2:使用JSON字符串创建
- 方式3:使用类似于构造方法的形式
基本运算
- 赋值运算:=
- 算术运算:+、-、*、/、%
- 符合运算:+=、-=、*=、/=、%=
- 自增自减:++、–
- 放在变量前:先自增或自减,然后再参与其他运算
- 放在变量后:先参与其他运算,然后再自增或自减
- 关系运算:
>、>=、<、<=、==、!=、===、!==
- ===,全等,不但比较数值,还比较数据类型
- 逻辑运算:&&(与)、||(或)、!(非)
- 按位运算:&、|、^、~、<<、>>
- 三目运算:?:
- 格式:表达式1 ? 表达式2 : 表达式3
- 流程:首先判断表达式1的真假,若为真则将表达式2作为整表达式的返回值,反之返回表达式3的值。
流程控制
- 说明:
- 条件必须写在()中
- 代码块必须写在{}中
- 分支结构(if-else)
- if - else if -else
- 分支结构(switch-case)
- 格式
switch (表达式) {
case 常量1:
语句块1
break
case 常量2:
语句块2
break
...
default:
语句块1
break
}
当程序执行到switch-case语句时,首先计算表达式的值,然后与所有的case选项匹配。
匹配到谁就执行对应的语句块,直到遇见break跳出语句。若没有匹配成功,则执行default语句块。
循环结构
1、while:
格式:
white(表达式){
循环体
}
var a =1
while(a<=10){
document.write("Hallo world<br/>")
a++
}
2、do-while:格式
do {
循环体
}while(表达式)
var a=1
var sum = 0
do{
sum=sum+a
a++
}while(a<=100)
document.write(sum)
(3)for:格式
for(表达式1;表达式2;表达式3){
循环体
}
for (var i = 1;i<=100;i++){
document.write(i+"<br/>")}
执行流程:先执行表达式1,再判断表达式2的真假,如果为真则执行循环体,之后再执行表达式3,
再次判断 表达式2,如果为假则跳出循环
说明:
- 三个表达式可以任意组合的省略
- 表达式1通常做一些初始化的操作,省略后需要把相关操作放在循环之前
- 表达式2是循环条件,省略后一直为真(死循环)。可以结合break完成先关功能
- 表达式3通常是使循环趋于结束的语句,省略后需要放在循环体的末尾
函数使用
- 定义函数的关键字:function
- 函数的调用可以放在定义之前
- 函数名不能重复,因为后面的会覆盖前面的
- 函数可以像普通变量一样使用,打印时会打印整个函数体
- 内部函数:也可以在函数内部定义函数
- 函数参数:
- 函数的参数多传或少传都不会报错
- 函数参数可以有默认值
- 函数的所有参数都会保存到arguments对象中,可以像数组一样操作它
- 封闭空间
(function (a, b) {
alert(a+b)
})(3, 5)
变量作用域
- 全局变量:定义在函数外部的变量,哪里都可以使用
- 局部变量:定义在函数内部的变量,只能在函数内部使用