JS基础语法
表达式与语句
表达式
1 + 2表达式的值为3
add(1,2)表达式的为函数的返回值
console.log表达式的值为函数本身
console.log(3)表达式的值为undefined
语句
var a = 1是一个声明语句
两者的区别
-
表达式一般都有值,语句可能有也可能没有
-
语句一般会改变环境(声明、赋值)
上面两句话并不是绝对的
空格
大部分空格没有实际意义。
var a = 1和var a=1没有区别。
加回车大部分时候也不影响,只有一个地方不能加回车,那就是return后面。
因为return后面不写东西会默认加上undefined。
标识符
规则
第一个字符,可以是Unicode字符或$或_或中文。
后面的字符,除了上面所说,还可以有数字。
常见报错:Uncaught SyntaxError: Invalid or unexpected token,没有捕获的语法错误:不合法的或不符合预期的字符串。
变量名是标识符。
区块 block
把代码包在一起
{
let a = 1
let b = 2
}
if语句
if (表达式) {
语句1
}else {
语句2
}
使用最没有歧义的写法(程序员戒律)
最推荐使用的写法:
if (表达式) {
语句
} else if (表达式) {
语句
} else {
语句
}
次推荐使用的写法:
function fn(){
if (表达式) {
return 表达式
}
if (表达式) {
return 表达式
}
return 表达式
}
switch语句
switch (fruit) {
case "banana":
// ...
break;
case "apple":
// ...
break;
default:
// ...
}
大部分时候不能省略break,少部分时候可以利用break。
问号冒号表达式(三元表达式)
表达式1? 表达式2: 表达式3
表达式1为true,执行表达式2
表达式1为false,执行表达式3
&&短路逻辑
A && B && C && D 取第一个假值或D
并不会取true/false
window.f1 && console.log('f1存在')
等效于
if (window.f1) {
console.log('f1存在')
}
||短路逻辑
A || B || C || D 取第一个真值或D
并不会取true/false
a = a || 100 //如果a存在,什么都不做,如果a不存在,a=100
等效于
if (a) {
a = a //什么都不做
} else {
a = 100 //保底值
}
while循环语句
while (表达式) {
语句
}
判断表达式的真假,
当表达式为真,执行语句,执行完再判断表达式的真假
当表达式为假,执行后面的语句
for循环语句
for (语句1;表达式2;语句3) {
循环体
}
先执行语句1
然后判断表达式2
如果为真,执行循环体,然后执行语句3
如果为假,直接退出循环,执行后面的语句
变态案例:
for (var i = 0; i < 5; i++) {
setTimeout(()=>{
console.log(i);
},0)//这个语句代表过一会儿再执行console
}
输出结果为5个5
break和continue
break结束整个循环(只会退出离他最近的循环)
continue结束当前轮次循环,进入下一轮次
label标签
JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置。
语法:
label:
语句
举例:
foo: {
console.log(1);
break foo;
console.log('本行不会输出')
}
console.log(2);
// 1
// 2
上面代码执行到break foo,就会跳出区块。