写代码啦
JS 语法
回复数(0) 浏览数(21)
{{topic.upvote_count || 0}} 编辑 回复

前几天学习了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文章后面会提到。

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

  1. 区别
    • break 是会退出最近的那个循环的所有循环
    • continue 只会退出最近的那个循环的某一环
  2. 举例
    • 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 语句

  1. 语法
    • foo: { console.log(1); break foo; console.log('本行不会输出') } console.log(2);
      它是一个标签,表示foo标签里的内容。
  2. 特殊例子
    • {foo: 1} 是什么
    • 这是一个代码块,里面有一个foo标签,标签的内容是1。
    • 它并不是一个对象

今天大概学习了一些JS的基础语法,之后要如何用好这些东西,就是之后深入学习JS需要做的事了。先学好基础,每个概念都要理解清楚透彻,才不会到后面无法理解其他东西。写代码一定要清楚你自己写下的代码是什么。

{{topic.upvote_count || 0}}

前几天学习了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文章后面会提到。

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

  1. 区别
    • break 是会退出最近的那个循环的所有循环
    • continue 只会退出最近的那个循环的某一环
  2. 举例
    • 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 语句

  1. 语法
    • foo: { console.log(1); break foo; console.log('本行不会输出') } console.log(2);
      它是一个标签,表示foo标签里的内容。
  2. 特殊例子
    • {foo: 1} 是什么
    • 这是一个代码块,里面有一个foo标签,标签的内容是1。
    • 它并不是一个对象

今天大概学习了一些JS的基础语法,之后要如何用好这些东西,就是之后深入学习JS需要做的事了。先学好基础,每个概念都要理解清楚透彻,才不会到后面无法理解其他东西。写代码一定要清楚你自己写下的代码是什么。

21
回复 编辑