前几天学习了JS的历史,了解的JS大概是在怎么样一个环境下产生的。今天学了一点具体的语法,现在来进行一个大概的总结。
JS 版本
前面有讲到,当时为了版权问题,在JavaScript发布标准的时候,使用的ECMAScript这个名字,所以后来的版本标准缩写就是ES。从一开始的EC3到后来的ES6,到现在的ES2019。JS有着比较大的进步,但还有一些历史原因遗留下来的问题,我们需要区别对待。
表达式和语句
这两个概念其实如果仔细较真,比较难以区分。一般来说,表达式基本都有值,语句可能有也可能没有;语句一般会改变环境。但是这两个区分也不是绝对的。事实上,并没有一个详细透彻的解释可能将这两个概念区分得特别清楚。也有很多人认为编程语言区分这两个概念并不是一个很好的主意,而像Lisp语言不区分表达式和语句的语言也有。作为初学者,大概我也就只能理解到这里,深层次的利弊好坏要到以后才能慢慢分析。
标识符
标识符是程序员定义的名称,代表程序的某些元素,如变量之类的。JavaScript语言有这些规定:
1. 规则
- 第一个字符,可以是Unicode
字母或$
或_
或中文
- 后面的字符,除了上面所说的,还可以是数字
2. 变量名是标识符
- var _ = 1
- var $ = 2
- var 你好 = 'hi'
3. 一些建议
- 变量名最好能让人比较直观地看出它的用途
- 不知道英文的情况下,宁可用中文也不要用拼音
if...else... 语句
曾经有个人问过我,他说,你觉得如果要实现一个目标程序,你觉得哪些逻辑是一定不可少的。我想了很久,也不是很确定地说,大概只需要if...else...
就行了。
1. 语法
- if(表达式){语句1}else{语句2}
- {} 语句在里面只有一句的时候可以省略,但还是不建议省略
- 如果没有{}的情况下,程序自动只会认为后面的第一句是{}里面的 内容
2. switch —— 一个特殊的if...else...
- 语法switch (fruit){
case "banana":
//...
break;
case "apple"
//...
break;
default:
//...
}
- break
- 一定不要省略break,break文章后面会提到。
- 一定不要省略break,break文章后面会提到。
while 语句
当你发现,你要不停地成败上次地做判断的时候,你没办法一个一个地去写if...else...,这个时候你就需要用到while
1. 语法
- while(表达式){语句}
- 判断表达式的真假
- 当表达式为真,执行语句,执行完再判断表达式的真假
- 当表达式为假,执行后面的语句
2. do...while 这个是先执行,后判断,用的并不多
for 循环
当你发现,用了while循环,结构有点啰嗦,或者说结构不够立体。于是大家又创造出了for循环。for循环是while循环的语法糖
1. 语法
- for(语句1;表达式2;语句3){循环体}
- 先执行语句1
- 然后判断表达式2
- 如果为真,执行循环体,然后执行语句3
- 如果为假,直接退出循环,执行后面的语句
for循环极大程度上使while循环结构变得更加立体,只是需要你进行一定的理解,以及明白语句的先后执行顺序
break 和 continue
- 区别
- break 是会退出最近的那个循环的所有循环
- continue 只会退出最近的那个循环的某一环
- break 是会退出最近的那个循环的所有循环
- 举例
-
for(var i = 0; i < 10; i++){ if(i%2===1){ break; } }
这个表示碰到第一个奇数的时候,立马就结束了这个循环,即使后面还有其他奇数也不管了。
-
for(var i = 0; i < 10; i++){
if(i%2===1){
continue
}else{
console.log(i)
}
}
这个表示当他是奇数的时候,不进行任何操作,跳过,判断下一个数。如果是偶数就打出来,然后继续判断接下来的数,直到程序结束。for(var i = 0; i < 10; i++){for(var j = 101; j < 110; j++){if(i === 5){break;}}console.log(i)}
当有双循环的时候,break只会跳出离他最近的那个循环,并不会跳出所有的循环。
label 语句
- 语法
-
foo: { console.log(1); break foo; console.log('本行不会输出') } console.log(2);
它是一个标签,表示foo标签里的内容。
-
- 特殊例子
-
{foo: 1}
是什么
- 这是一个代码块,里面有一个foo标签,标签的内容是1。
- 它并不是一个对象
-
今天大概学习了一些JS的基础语法,之后要如何用好这些东西,就是之后深入学习JS需要做的事了。先学好基础,每个概念都要理解清楚透彻,才不会到后面无法理解其他东西。写代码一定要清楚你自己写下的代码是什么。