JS基本语法
JS是什么?
- JavaScript的简写,与Java没有一毛钱关系。
- 客户端(浏览器)脚本,服务器端的脚本叫Node.js
- 可以给静态页面添加动态属性,如:修改样式,添加事件。
- 由来:NetSpace => LiveScript,后来与Sun公司有合作,借助Java做推广,将名字改为JavaScript
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语句块。
- 说明:多个case条件不要相等
循环结构
-
while
- 说明:与python中的使用几乎一样
- 格式:
while (表达式) { 循环体 }
-
do-while
- 格式:
do { 循环体 } while (表达式)
- 说明:
当程序执行到do-while语句时,首先执行循环体,然后判断表达式的真假。若表达式的值为真,则返回继续执行循环体;若表达式的值为假,则执行后面的内容。
- 对比while:循环体至少会执行一次,即使表达式一直不成立。
-
for
- 格式:
for (表达式1; 表达式2; 表达式3) { 循环体 }
- 流程:
当程序执行到for语句时,首先执行表达式1,然后判断表达式2的真假。若表达式2的值为真,则执行循环体,然后执行表达式3,接着继续判断表达式2的真假;如表达式2的值为假,则跳过循环(循环结束)。
- 说明:
- 三个表达式可以任意组合的省略
- 表达式1通常做一些初始化的操作,省略后需要把相关操作放在循环之前
- 表达式2是循环条件,省略后一直为真(死循环)。可以结合break完成先关功能
- 表达式3通常是使循环趋于结束的语句,省略后需要放在循环体的末尾
-
for-in
- 类似于python中的用法,通常用于遍历数组或对象
异常处理
-
说明:与python中的用法相似,可以认为是一种特殊的流程控制语句
-
示例:
try { // 手动抛出异常 throw '出问题了&_&' alert('normal') } catch (e) { alert(e) }
函数使用
-
定义函数的关键字:function
-
函数的调用可以放在定义之前
-
函数名不能重复,因为后面的会覆盖前面的
-
函数可以像普通变量一样使用,打印时会打印整个函数体
-
内部函数:也可以在函数内部定义函数
-
函数参数:
- 函数的参数多传或少传都不会报错
- 函数参数可以有默认值
- 函数的所有参数都会保存到arguments对象中,可以像数组一样操作它
-
封闭空间
(function (a, b) { alert(a+b) })(3, 5)
变量作用域
- 全局变量:定义在函数外部的变量,哪里都可以使用
- 局部变量:定义在函数内部的变量,只能在函数内部使用