浅谈JS基本语法

211 阅读6分钟

近日开始学习 JS ,了解 JS 的入门用法。本篇文章主要总结一下关于 JS 入门的基本语法。

语句和表达式

语句的定义

语句(statement)指为了完成某个任务而进行的操作,一般用来改变环境。例如:

var a = 1+1 ;

以上就是一个赋值语句,表示用var命令声明变量a,而变量a的值为表达式1+1的运算结果。

表达式的定义

表达式(expression)指为了得到返回值的计算式。如上述关于语句的例子中的1+1即为表达式。

二者的区别

二者的主要区别在于:语句主要为了某种操作,一般情况下不需要返回值;而表达式是为了得到返回值,并且一般都会得到一个值。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。

变量

变量定义

变量是对“值”的具名引用,即为值起名,然后引用这个名字就等于引用这个值。变量的名字即变量名。例如:

var a = 2; 

上述代码中先声明了变量a,在变量a与数值2之间建立引用关系,称为将数值2“赋值”给变量a。赋值之后,变量名a就会得到数值2。整个赋值语句开头的var是变量声明命令,表示通知解释引擎,要创建一个变量a

注意点

但要注意,JavaScript 的变量名大小写敏感, A 和 a 是两个不同的变量。同时,在不影响断句的前提下,大部分的空格和回车也是没有意义的。

也有一个例外,那就是return后面不加回车的话,系统会自动帮你补上undefined

变量提升

变量提升(hoisting),是由于JS 引擎工作的方式是先解析代码,获取所有被声明的变量后,再一行一行地运行,所以所有变量的声明语句都会被提到代码的头部。例如:

console.log(a);
var a = 1 ;

上述代码使用了console.log的方法,在控制台显示变量a的值。但是由于声明优先于赋值,所以结果会显示undefined,表示变量a已经声明,但未赋值。

标识符

标识符(identifier)指用来识别各种值的合法名称。最常见的标识符就是变量名以及函数名。

命名规则

标识符有一套命名规则:

  • 第一个字符可以是 Unicode 字母或者美元符号$或者下划线_或者中文。
  • 第二个字符以及后面的字符,除了上述符号、字母外,还可以是数字0-9

当字符不合法时,系统会自动报错,提示Uncaught Syntax Error: Invalid or unexpected token

注释

JavaScript 提供两种注释方法,一种是用//起头进行单行注释,另一种是多行注释,放在/**/之间。

区块

区块(block)由 JavaScript 中的大括号将多个相关语句组合在一起。而对于var命令来说,区块不构成单独的作用域(scope)。

条件语句

在 JavaScript 中可以使用if结构和switch结构来完成条件判断,即有满足预设的条件,才会执行相应的语句。

if语句

if结构先判断一个表达式的布尔值,然后根据布尔值的真伪执行不同的语句。而布尔值指的是JavaScript中的两个特殊值,一个是true 表示为真,另一个是false表示为伪。其基本语法为:

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

其中:

  • 如果表达式的求值结果为true则执行紧跟在后面的语句,如果结果为false则跳过后面的语句;
  • 表达式可以为a === 1,语句1、2、3中可以再镶嵌if
  • else代码块总是与离自己最近的那个if语句配对。

注意不要搞混赋值表达式=、相等运算符==和严格相等运算符===

例如:

var x = 1;
var y = 2;
if(x = y){
    console.log(x)
}

则会输出结果2

而又如例子:

var a = 1;
if(a === 2)
    console.log("a")
    console.log("a等于2")

上述例子就会显示结果a等于2。如果if语句后面省略{},则if只能管到后面紧跟着的第一个语句。

switch语句

使用switch语句可以方便地代替多个if else语句,但是用得比较少。

例如:

switch(fruit){
    case"banana";
    break;
    case"apple";
    break;
    default:
}

三元计算符

三元计算符简称为问好冒号表达式。例如:

(条件)?表达式1:表达式2 

上述代码表示当“条件”为true时,就返回表达式1的值,否则返回“表达式2”的值。

&&短路逻辑

A&&B&&C&&D 

&& 短路逻辑会取第一个假值或者D,并不会取 true 或者 false 。

||短路逻辑

A||B||C||D

|| 短路逻辑会取其中一个真值或者D。

循环语句

循环语句会用于重复循环执行某个操作。

while 循环

while语句包括一个循环条件和一段代码块,只要条件为真,就会一直循环执行代码块。基本语法如下:

while(表达式){语句}; 

该语句会先判断表达式真假,表达式为真则执行语句,执行完这个语句后再判断表达式的真假;表达式为假则执行后面的语句。

但也有特例:

var a = 1;
while(a ! == 1){
    console.log(a);
    a = a + 0.1;
}

该例子会因为浮点数不精确而死循环,榨干内存。

for 循环

for语句是while语句的升级版,可以指定循环的起点、终点和终止条件。基本语法如下:

for(语句1;表达式2;语句3){
    循环体
}

先执行语句1,再判断表达式2,如果结果为真,就会执行循环体,然后再执行一次语句3;如果结果是假,就会跳出循环,执行后面的语句。

注意一个变态特例:

for(var i = 0; i < 5; i++){
    setTimeout(()=>{
    console.log(i + '随机数' + Math.random())
    },0)
} 

该特例会输出以下结果:

image.png

break 语句

break语句具有跳转作用,可以让代码不按既有的顺序执行,用于跳出代码块或当前的循环。

例如:

var i = 0;

while(i < 100){
    console.log('i 当前为: ' + 1)
    i++;
if(i === 10)break;
}

上述的代码只会循环10次,一旦i等于10,就会跳出循环。

continue 语句

continue语句也具有跳转作用,但是它用于跳过本轮循环,并开始下一轮循环。

例如:

var i = 0;

while(i < 100){
    i++;
if(i %2===0)continue;
    console.log('i 当前为: ' + i);
}

值得注意的是,如果存在多重循环,不带参数的 break 语句和 continue 语句都只针对最内层循环。

label语句

标签(label)可以放在语句前,相当于定位符,用于跳转到程序的任意位置,格式如下:

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

上述代码执行到break foo时就会跳出区块,最终输出结果为1 2

以上就是本人暂时学习到的JavaScript基本语法,基本语法中有值得注意的特例的话欢迎在评论区补充,感谢!

©本总结教程版权归作者所有,转载需注明出处