JS基本语法

211 阅读4分钟

一、什么是表达式和语句

1.1 表达式

1+2 表达式的为3

add(1, 2)表达式的值为函数的返回值

console.log 表达式的值为函数本身

console.log(3) 表达式的值为 undefined

1.2 语句

var a = 1 是一个语句

二者的区别:

表达式一般都有值,语句可能有也可能没有

语句一般会改变环境(声明、赋值)

上面两句话并不是绝对的

二、标识符

2.1 规则

  • 第一个字符,可以是 Unicode 字母或 $ 或 _ 或中文
  • 后面的字符,除了上面所说,还可以有数字

2.2 变量名是标识符

var _ = 1
var $ = 2
var ______ = 6
var 你好 = 'hi'

三、注释

3.1 用法

单行注释:ctrl + /

// 只能注释单行文本

多行注释:ctrl + shift + /

/*
  多行注释
 */

3.2 分类

不好的注释

  • 把代码翻译成中文
  • 过时的注释
  • 发泄不满的注释

好的注释

  • 踩坑注解
  • 为什么代码写的这么奇怪,遇到什么 BUG

好的注释能够提高代码阅读质量,注意信噪比

四、if else 语句

if (表达式) {
  语句1...
} else {
  语句2...
}

{} 在语句只有一句的时候可以省略,但是不建议这样做

五、while for 语句

while 循环

while (表达式) {
  语句...
}
  • 判断表达式的真假
  • 当表达式为真,执行语句,执行完再判断表达式的真假
  • 当表达式为假,执行后面的语句

for 循环

for 是 while 循环的语法糖(便捷写法)

for (语句1; 表达式2; 语句3) {
  循环体
}
  • 先执行语句1
  • 然后判断表达式2
  • 如果为真,执行循环体,然后执行语句3
  • 如果为假,直接退出循环,执行后面的语句

六、break continue

6.1 break

我已经找到了一个满足条件的结果,不再继续往下执行,退出循环

// break:执行 break 立即跳出循环语句
for (var i = 1 ; i < 200 ; i += 2) {
  // 能被 3 整除
  if (i % 3 === 0) {
    console.log(i);
    break;
  }
}
console.log("结束");
/*
  i = 1;i < 200 真;i % 3 === 0 假;i += 2
  i = 3;i < 200 真;i % 3 === 0 真输出 3;执行 break 立即跳出当前所在层的 for 语句
  输出”结束“
*/
// 作用:在循环语句 for,do while,while 中遇见 break,只能结束 break 所在层的循环不能控制外层循环。
for (var i = 1; i <= 3 ; i ++ ) {
  for (var j = 1; j <= 3; j ++) {
    // 进行限制
    if (j == 2) {
      console.log(i,j);
      // break 只能控制 j 不能控制 i
      break;
    }
  }
}
console.log(j + "结束");
// break 控制外层循环:给外层循环添加标签,break 引用
waiceng: for (var i = 1; i <= 3 ; i ++ ) {
  for (var j = 1; j <= 3; j ++) {
    // 进行限制
    if (j == 2) {
      console.log(i,j);
      // break 只能控制 i 不能控制 j
      break waiceng;
    }
  }
}
console.log(i + "结束");
console.log(j + "结束");
/*
  var i = 1;i <= 3 真;var j = 1;j <= 3 真;j == 2 假;j++
  j = 2;j <= 3 真;j == 2 真;输出 1,2 执行 break waiceng; 跳出 i 循环
  输出 1 结束
  输出 2 结
*/

6.2 continue

continue(继续):这个结果不是我想要的,赶快测试下一个。

// continue 结束该次循环,立即执行变量改变
for (var i = 1; i < 10 ; i += 2) {
  if (i % 3 === 0) {
    continue;
  }
  console.log(i);
}
console.log(i + "结束");
/*
  var i = 1;i < 10 真;执行 i = 1 这次循环 i % 3 === 0 假输出 1;
  i = 3;i < 10 真;执行 i=3 这次循环 i % 3 === 0 真;执行 continue,
  立即结束 i = 3 这次循环
  i = 5;i < 10 真;执行 i = 5 这次循环 i % 3 === 0 假输出 5;
  i = 7;i < 10 真;执行 i = 7 这次循环 i % 3 === 0 假输出 7;
  i = 9;i < 10 真;执行 i = 9 这次循环 i % 3 === 0 真执行 continue;立即结束该次循环
  i = 11;i < 10 假立即跳出 i 循环
  输出 11 结束
*/
// continue:遇见 continue 结束该次循环,立即进入下一次循环
// continue 也是只能结束所在层的这次循环,不能控制外层循环
for (var i = 1; i <= 3; i++) {
  for (var j = 1; j <= 3; j++) {
    if (j == 2) {
      // continue 只能控制 j
      continue
    }
    console.log(i, j)
  }
}
console.log(j)
/*
  var i = 1;i <= 3 真;var j = 1;j <= 3 真;j == 2 假;输出 1, 1; j++
  j = 2; j <= 3 真;j == 2 真遇见 continue 结束该次循环;j++
  j = 3; j <= 3 真;j == 2 假;输出 1,3;j++
  j = 4; j <= 3 假立即跳出 j 循环
  i = 2; i <= 3 真;var j = 1;j <= 3 真;j == 2 假;输出 2, 1; j++
  j = 2; j <= 3 真;j == 2 真遇见 continue 结束该次循环;j++
  j = 3; j <= 3 真;j == 2 假;输出 2,3;j++
  j = 4; j <= 3 假立即跳出 j 循环
  i = 3; i <= 3 真;var j = 1;j <= 3 真;j == 2 假;输出 3, 1; j++
  j = 2; j <= 3 真;j == 2 真遇见 continue 结束该次循环;j++
  j = 3; j <= 3 真;j == 2 假;输出 2, 3; j++
  j = 4; j <= 3 假立即跳出 j 循环
  i = 4; i <= 3 假立即跳出 i 循环
  输出 4
*/
// continue 想控制外层,也是通过标签绑定
waiceng: for (var i = 1; i <= 3; i++) {
  for (var j = 1; j <= 3; j++) {
    if (j == 2) {
      // continue 只能控制 i
      continue waiceng
    }
    console.log(i, j)
  }
}
console.log(i)

七、label

语法

foo: {
  console.log(1);
  break foo;
  console.log('本行不会输出')
}
console.log(2)

{
  foo: 1;
}