关于javascript:JS-的基本语法

37次阅读

共计 4012 个字符,预计需要花费 11 分钟才能阅读完成。

 JS 的根本语法

 什么是表达式和语句

表达式

var a = 1+2
  • 这句话先用 var 命令,申明变量 a,而后将 1+2 的运算后果赋值给了变量 a。这里 1+2 就是表达式(expression), 指一个为了失去返回值的计算公式。
  • add(1,2)表达式的值为函数的返回值
  • console.log 表达式的值为函数自身
  • console.log(3)表达式的值为 undefined, 然而打印进去是 3 .

语句

  • var a=1 是一个语句
  • 表达式和语句的区别:
    语句和表达式的区别在于,前者次要为了进行某种操作,个别状况下不须要返回值;后者则是为了失去返回值,肯定会返回一个值。但凡 JavaScript 语言中预期为值的中央,都能够应用表达式。比方,赋值语句的等号左边,预期是一个值,因而能够搁置各种表达式。语句以分号结尾,一个分号就示意一个语句完结。多个语句能够写在一行内。

大小写是不同

  • 分号后面能够没有任何内容,JavaScript 引擎将其视为空语句
;;;
  • 下面的代码就示意 3 个空语句。
  • 表达式不须要分号结尾。一旦在表达式前面增加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。
  • 大部分空格是没有实际意义的,除了 return 前面

 标识符的规定

  • 含意:标识符(identifier)指的是用来辨认各种值的非法名称。最常见的标识符就是变量名,以及前面要提到的函数名。JavaScript 语言的标识符对大小写敏感,所以 a 和 A 是两个不同的标识符。
  • 规定
  • 第一个字符,能够是任意 Unicode 字母(包含英文字母和其余语言的字母),以及美元符号 ($) 和下划线(___)。
  • 第二个字符及前面的字符,除了 Unicode 字母、美元符号和下划线,还能够用数字 0-9。

 变量名是标识符

 var = 1
 var $ = 1
 var _____ = 1 // 个别会被骂死,因为不分明下划线有多少
 var 你好 = 'hi'
 arg0
 _tmp
 $elem
 Π

 不非法的标识符

1a // 第一个标识符不能是数字
23 // 同上
*** // 标识符不能蕴含星号
a+b // 标识符不能含有 +
-d // 标识符不能蕴含减号或者连接线

 正文

// .....  只能正文一行
/*....*/ 全部都是正文的内容,不限行数

 if else 语句

  • if 构造先判断一个表达式的值,而后依据值的真伪,执行不同的语句。所谓值,指的是 JavaScript 的两个非凡值,true 示意真,false 示意伪。
  • if(表达式 ){ 语句 1}else{语句 2}
  • 如果表达式成立,则执行语句 1;
  • 如果表达式不成立,则执行语句 2.
a = 1;
if (a === 2){console.log('a');
}else{console.log('a 不等于 2')
}
  • if…else 构造
  • if 代码块前面,还能够跟一个else 代码块,示意不满足条件时,所要执行的代码
if (m === 3){// 满足条件,执行语句 1}else{// 不满足条件,执行语句 2}
  • if…else 语句连写
if (a ===0){// 满足条件,执行语句 1}else if (a ===1) {// 满足条件,执行语句 2}else if (a ===2) {// 满足条件,执行语句 3}else{// ....}
  • else 代码块总是与离本人最近的那个if 语句配对。
var m = 1;
var n = 2;
if (m !== 1)
if (n === 2)console.log('hello');
else console.log('world')
  • 下面代码不会有任何输入,else 代码块不会失去执行,因为它跟着的是最近的那个 if 语句,相当于上面这样。
if(m !==1){if(n ===2){console.log('hello');
 }else{console.log('world');
 }
}
  • 如果想让 else 代码块追随最下面的那个 if 语句,就要扭转大括号的地位。
if(m !==1){if(n ===2){console.log('hello');
 }
}else{console.log('world');
}
 
//world
  • 三元运算符?:
  • JavaScript 还有一个三元运算符(即该运算符须要三个运算子)?:,也能够用于逻辑判断。
(条件)?表达式 1:表达式 2 
  • 下面代码中,如果“条件”为 true,则返回“表达式 1”的值,否则返回“表达式 2”的值。
var even(n % 2 === 0) ? true : false;
  • 下面代码中,如果 n 能够被 2 整除,则 even 等于 true,否则等于 false。它等同于上面的模式。
var even;
if (n % 2 ===0){even = true;}else{even = false;}
  • 这个三元运算符能够被视为 if…else… 的简写模式,因而能够用于多种场合。
var msg = '数字'+n+'是'+(n % 2 ===0 ? '偶数';'奇数');
  • 下面代码利用三元运算符,在字符串之中插入不同的值。

 while for 语句

  • While 语句包含一个循环条件和一段代码块,只有条件为真,就一直循环执行代码块。
while(条件 1){语句 1;}
// 或者
while (条件 2)
 语句 2;
  • 判断表达式虚实
  • 当表达式为真,执行语句,执行完再次判断表达式的虚实
  • 当表达式为假,执行前面的语句
var i = 0;
while(i < 10){console.log(i)
 i = i+1;
}
  • 下面的代码将循环 10 次,直到 i 等于 10 为止。
  • 然而加上console.log('done'),就只会打印到 9,间接 done 完结。
  • for 语句是循环命令的另一种模式,能够指定循环的终点、起点和终止条件。它的格局如下。
for (初始化表达式;条件;递增表达式)
 语句
// 或者
for (初始化表达式;条件;递增表达式){语句}
  • for 语句前面的括号外面,有三个表达式。
  • 初始化表达式(initialize):确定循环变量的初始值,只在循环开始时执行一次。
  • 条件表达式(test):每轮循环开始时,都要执行这个条件表达式,只有值为真,才持续进行循环。
  • 递增表达式(increment):每轮循环的最初一个操作,通常用来递增循环变量。
  • 判断
var a = 0.1;    // 初始化
while(a !==1);  // 判断
console.log(a); // 循环体
a=a+0.1         // 递增
  • for 语法
for (语句 1; 表达式 2;语句 3){循环体}
  • 先执行语句 1
  • 而后判断表达式 2
  • 如果为真,执行循环体,而后执行语句 3
  • 如果为假,间接退出循环,执行前面的语句(不是语句 3)
  • 留神:for 语句四个局部,无论省略任何一个,或者全副都省略,都有可能造成死循环。

 break 和 continue

  • break 语句和 continue 语句都具备跳转作用,能够让代码不按既有的程序执行。
  • break 语句用于跳出代码块或循环。
for (var i = 0; i < 10 ; i++){if(i % 2 === 1){break}
}
  • 下面代码当 i % 2 失去后果后,break 之后不会在走 i ++, 间接跳到 for 前面去了
for (var i = 0; i < 5 ; i++){console.log(i);
 if (i ===3)
 break;
}
// 0
// 1
// 2
// 3
  • 下面代码执行到 i 等于 3,就会跳出循环
  • continue 语句用于立刻终止本轮循环,返回循环构造的头部,开始下一轮循环。
for (var i = 0; i < 10 ; i++){if(1 % 2 === 1){continue}else{console.log(i)
 }
}
// 0
// 2
// 4
// 6
// 8
  • 下面代码只有在 i 为偶数时,才会输入 i 的值。如果 i 为奇数,则间接进入下一轮循环。
  • 留神:有的语言用 next 取代 continue
  • 如果存在多重循环,不带参数的 break 语句和 continue 语句都只针对最内层循环。

 标签(label)

  • JavaScript 语言容许,语句的后面有标签(label),相当于定位符,用于跳转到程序的任意地位,标签的格局如下。
label:
标签
  • 标签能够是任意的标识符,但不能是保留字,语句局部能够是任意语句。
  • 标签通常与 break 语句和 continue 语句配合应用,跳出特定的循环。
top:
for (var i = 0; i < 3; i++){for(var j = 0; j < 3; j++){if(i === 1 && j ===1) break top;
 console.log('i=' + i + ',j' +j);
 }
}
// i=0;j=0
// i=0;j=1
// i=0;j=2
// i=1;j=0
  • 下面代码为一个双重循环区块,break 命令前面加上了 top 标签(留神,top 不必加引号),满足条件时,间接跳出双层循环。如果 break 语句前面不应用标签,则只能跳出内层循环,进入下一次的外层循环。
  • 标签也能够用于跳出代码块
foo:{console.log(1);
 break foo;
 console.log('本行不会输入');
}
console.log(2);
// 1
// 2
  • break foo 会跳出复制代码块
  • continue 语句也能够与标签配合应用。
top:
for (var i = 0; i < 3; i++){for(var j = 0; j < 3; j++){if(i === 1 && j ===1) continue top;
 console.log('i=' + i + ',j' +j);
 }
}
// i=0;j=0
// i=0;j=1
// i=0;j=2
// i=1;j=0
// i=2;j=0
// i=2;j=1
// i=2;j=2
  • 下面代码中,continue 命令前面有一个标签名,满足条件时,会跳过以后循环,间接进入下一轮外层循环。如果 continue 语句前面不应用标签,则只能进入下一轮的内层循环。

参考链接:https://wangdoc.com/javascrip…

正文完
 0