JS语言可以说前端技术的核心部分了。这是一门脚本语言,或者说解释性语言,它在运行前无须进行预编译就可在浏览器上运行。但跟其他常见编译型语言(如Java)相同,它也有其自身的基本数据类型,表达式,运算符及语法框架等。
基本表达式和语句
表达式和语句是存在区别的
表达式
1 + 2就是表达式,它一般有值- fn(x, y) 一个函数表达式的值是该函数的返回值
- 一组对比可以帮助你更好理解表达式
- console.log的值为这个函数本身
- 而console.log(1)的值是多少呢?答案不是1,也不是函数本身,而是
undefinedJavaScript中函数没规定返回值时,默认返回值是undefined
语句
let x = 1 + 2就是一个语句,它可以给变量赋值
语句与表达式的区别:
- 表达式一般都有值,而语句不一定
- 语句是用来改变环境的(声明、赋值)
注意,JS中大小写很敏感,变量名,函数名,大小写是不一样的,注意区分
标识符
命名规则:
JS的标识符命名规则可以说是非常宽松了。第一个字符可以是 Unicode 字母或美刀 $ 或 _ 甚至是中文。
第二个字符开始,还可以有数字,记住数字不能打头即可。
let $ = 1 合法√
let _ = 1 合法√
let ___ = 1 合法√
let 张三 = 1 合法√
区块block
区块可以说是JS语言中的重要概念,使用大括号,将多个相关的语句组合在一起,就称为“区块”(block)。一个区块就构成了一个单独的作用域。区块往往用来构成其他更复杂的语句或结构,比如if,while,for,function等。
if else语句
if语句是老常客了,也是最基本的选择语句,在各大语言里都能经常碰到它。
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语句一种特殊的简写方法,它有一些需要注意的地方,这一块先略过,下次再细细分解。
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++) {} 非常容易实现遍历等等
break / continue
这两个是用在循环体语句中的,分别表示:
break 退出所有循环 / continue 退出当前这一次循环
label语句
实际工作用的非常之少,但是算是知识点,面试可能会考到。
point(标识符): {
console.log('hi');
break point;
console.log('本行不会输出');
}
面试继续下套:
{
foo: 1
}
这是什么?是一个对象Object么?错误
它是一个 {} 包起来的 block ,里面有个 label 名字叫 foo,标记的语句块就是1。
实际工作中这么写要被人打死,就是专门用来应试下套的。需要多多注意语法中这些大坑。