JS语法
JS是什么?
-
JavaScript的简写,与Java没有半毛关系;相当于雷锋与雷峰塔,印度与印度尼西亚的关系
-
它是客户端(浏览器)脚本,服务端脚本Node.js
-
他可以给静态页面添加动态属性,如:添加事件,修改样式。
-
由来:NetSpace => LiveScript,后来与Sun公司合作;
为了借助Java语言的名气进行宣传和推广,将名字改为了JavaScript。
JS引入方式
-
方式1:在HTML中的任意位置添加script标签,标签中即可书写JS代码
-
方式2:通过script标签引入外部的JS文件
-
方式3:设置元素的特定属性,添加或设置元素的特殊事件
变量定义
-
数字:number, 整数、小数
-
字符串:string,单引号、双引号都可以, '+'可以进行字符串拼接
-
布尔:boolean,只有两个值,true和false
-
数组:array,可以使用[]定义,也可以使用new Array()定义
-
null:空类型,只有一个值,null,类型名为object
-
NaN:not a number,不是一个数字,类型任然是object
-
使用isNaN进行判断,不能使用 '=='
-
-
未定义:undefined
-
定义变量不赋值,使用对象不存在的属性,都会出现未定义变量
-
直接判断应与undefined比较,使用typeof判断应与'undefined'比较
-
-
对象:object
-
方式1:先创建对象,然后添加属性和方法
-
方式2:使用JSON字符串创建对象
-
方式3:使用类似于构造方法的形式
-
基本运算
-
赋值运算:=
-
算术运算:+、-、*、/、%
-
复合运算:+=、-=、*=、/=、%=
-
自增自减:++、--
-
放在变量前:先自增或自减,然后参与其他运算
-
放在变量后:先参与其他运算,然后在自增或自减
-
-
关系运算:>、>=、<、<=、==、!=、===、!==
-
逻辑运算:&&、||、!
-
按位运算:&、|、^、~、<<、>>
-
三目运算:?:
-
格式:表达式1 ? 表达式2 : 表达式3
-
流程:首先判断表达式1的真假,若为真表达式2作为返回值,否则表达式3作为返回值
-
流程控制
-
说明:
-
条件都是写在()中的
-
代码块都是写在{}中的
-
-
分支结构(if-else)
-
if - else if - ... -else
-
-
分支结构(switch-case)
-
格式:
switch (表达式) { case 常量1: 语句块1 break .... default: 语句块 break }
-
说明:
当程序执行到switch-case语句时,首先计算表达式的值,然后与所有的case选项匹配,匹配成功,则直接跳转到对应的语句块执行,直到遇见break才跳出结构;若没有匹配成功,则执行default语句块。
case选项不要出现相同的,不可能同时执行多个case选项的语句块。
-
-
循环结构(while)
-
与python中的使用方式一样
-
格式:
while (表达式) { 循环体 }
-
-
循环结构(do-while)
-
格式:
do { 循环体 } while (表达式)
-
说明:
当程序执行到do-while语句时,首先执行循环体,然后判断表达式的真假;若表达式的值为真,则继续执行循环体,直到表达式的值为假;若表达式的值为假,则直接向下执行。
do-while的循环体至少会执行一次,即使表达式一直不成立。
-
-
循环结构(for)
-
格式:
for (表达式1; 表达式2; 表达式3) { 循环体 }
-
说明:
当程序执行到for语句时,首先执行表达式1,然后判断表达式2的真假;若表达式2的值为真,则执行循环体,然后接着执行表达式3,之后再进行表达式2的判断;若表达式2的值为假,则跳出循环。
-
使用:
-
for中的三个表达式可以任意组合的省略
-
表达式1通常做初始化的操作,省略时需要将初始化操作放在for之前
-
表达式2省略,循环条件为真也就是死循环,可以结合break完成原有的功能
-
表达式3通常是使循环趋于结束的语句,省略后需要放在循环体的最后面。
-
-
-
循环结构(for-in)
-
类似于python中的使用,专门用于遍历数组和对象
-
-
异常处理
// 尝试执行代码 try { // 抛出异常, 抛出一个字符串即可 throw '出问题了' alert('normal') // catch 捕获异常 } catch (e) { alert(e) }
函数使用
-
函数定义使用关键字:function
-
函数的调用可以放在定义之前
-
函数名不能重复,因为后面会覆盖前面的
-
函数可以像普通变量一样使用,打印时会显示全部内容
-
匿名函数:就是没有名字的函数,定义时只需将正常的函数定义去掉名字即可
-
内部函数:定义在函数内部的函数
-
函数参数:
-
可以有默认值
-
函数参数不传也不会报错
-
所有的函数参数都会保存在arguments变量中(可以认为是数组)
-
-
封闭空间:
// 封闭空间,既可以作为一个整体,又可以灵活实现功能 (function(a, b){ alert(a+b) })(3, 5)
-
变量作用域
-
全局变量:定义在函数外部的变量,哪里都可以使用
-
局部变量:定义在函数内部的变量,只能在函数内部使用
-
总结
-
常用函数:
-
alert
-
typeof
-
document.write
-
parseInt
-
parseFloat
-
-
常用类库:
-
String:字符串
-
Math:数学
-
Date:日期
-
Array:数组
-
RegExp:正则
-