1. 表达式和语句
表达式
-
1 + 2就是表达式,它一般有值 -
fn(x, y) 一个函数表达式的值是该函数的返回值
-
举例:
- console.log的值为这个函数本身
- 而console.log(1)的值是多少呢?答案不是1,也不是函数本身,而是
undefinedJavaScript中函数没规定返回值时,默认返回值是undefined
语句
let x = 1 + 2就是一个语句,它可以给变量赋值
语句与表达式的区别:
- 表达式一般都有值,而语句不一定
- 语句是用来改变环境的(声明、赋值)
注意,JS中大小写很敏感,变量名,函数名,大小写是不一样的,注意区分
2. 标识符的规则
命名规则:
JS的标识符命名规则可以说是非常宽松了。第一个字符可以是 Unicode 字母或美刀 $ 或 _ 甚至是中文。
第二个字符开始,还可以有数字,记住数字不能打头即可。
let $ = 1 合法√
let _ = 1 合法√
let ___ = 1 合法√
let 张三 = 1 合法√
let _______________ = 1 合法√ 但会被同事骂死
区块可以说是JS语言中的重要概念,使用大括号,将多个相关的语句组合在一起,就称为“区块”(block)。一个区块就构成了一个单独的作用域。区块往往用来构成其他更复杂的语句或结构,比如if,while,for,function等。
条件语句
&&:与
||:或
A&&B: A与B同时成立则为true
A||B: A或B有有一个成立则为true
A&&B&&C&&D:返回第一个false值或者D A||B||C||D:返回第一个True值或者D
注释
不要写过多翻译代码的注释,不利于突出注释中的重点;
易踩坑处,奇怪的代码处宜写注释;
3. if else 语句
if (条件表达式) {语句1} else {语句2}
需要注意的是,虽然{}在只有一句的情况下可以忽略,不过不建议这么做,会降低代码可读性。
不看常态看变态:
- 条件表达式里可以放奇怪的东西,如 a = 1,它被认为是true,所以可以执行
- if,else里都可以无限嵌套if else
- 缩进也可以很坑,面试题里常常下套让你钻(if后不加{}容易带来混淆,所以为什么建议加上)
a = 1
if(a === 2)
console.log('a')
console.log('a=2')
复制代码
程序猿圣经————使用最没有歧义的写法
if (表达式) {
语句1
} else if{
语句2
} else {
语句3
}
复制代码
三元表达式(问好冒号表达式)
表达式1? 表达式2: 表达式3
这是if else语句一种特殊的简写方法。
4. while for 语句
while while(表达式) {循环体}
执行逻辑是,先判定表达式的true或false,如果true,那么执行循环体语句,执行完继续判定是否为true...
直到表达式为false时,跳过{}中的语句,执行后面的代码。
所以很容易看出来,非常容易写出死循环,要万分注意!
do while语句非常类似的,只是它先做一遍do,再去判定表达式的布尔值。
for
for循环可以用while循环来实现,但是它是一种非常方便且几乎最常用的循环写法。
for(语句1;表达式;语句3) {
循环体
}
复制代码
如for(let i = 1; i < 11; i++) {} 非常容易实现遍历等等
5. break continue
这两个是用在循环体语句中的,分别表示:
break 退出所有循环 / continue 退出当前这一次循环
6. label
实际工作用的非常之少,但是算是知识点,面试可能会考到。
point(标识符): {
console.log('hi');
break point;
console.log('本行不会输出');
}
复制代码
面试继续下套:
{
foo: 1
}
复制代码
这是什么?是一个对象Object么?错误
它是一个 {} 包起来的 block ,里面有个 label 名字叫 foo,标记的语句块就是1。
实际工作中这么写要被人打死,就是专门用来应试下套的。需要多多注意语法中这些大坑。