JS 基本语法

我心飞翔 分类:javascript

一、JS表达式和语句的区别总结如下:

1.表达式(expressions)

  表达式是由运算符构成,并运算产生结果的语法结构。每个表达式都会产生一个值,它可以放在任何需要一个值的地方,比如作为一个函数调用的参数,下面的每行代码都是一个表达式:

var a = (5 + 6) / 2; //表达式:(5 + 6) / 2
var b = (function(){ return 25;})(); //表达式: (function(){ return 25;})()
foo(a*b); //表达式:a*b
 

2.语句(statements)

语句则是由“;”分隔的句子或命令。如果在表达式后面加上一个“;”分隔符,这就被称为“表达式语句”。它表明只有表达式,而没有其他语法元素的语句。

var a = (5 + 6) / 2; //整行,赋值语句
if(a>12) { statements} //条件语句
var o = {}; //赋值语句
(function(obj){ obj.b = 23;})(o||{}); //表达式语句
 
javascript中的语句一般分为以下几种:

(1)声明语句:变量声明和函数声明

(2)赋值语句

(3)控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句。

(4)表达式语句:这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。

示例:
var num = 9; //声明、赋值语句
vloop: //标签语句
{ //其实这里大括号可以不需要的,在这里我只想向大家展示一下这种代码块结构而已
    for(var i=1; i<10; i++) { //循环语句
        if(i==num){ //条件语句
            break vloop;
        }else{
            num = num - 1;
        }
    }
}
console.log(num); //表达式语句,输出:5 
 

由上面可以看出,表达式和语句还是存在很大区别的,可也说表达式是语句的构成部分,而语句则又可以组成可执行代码块。一般我们都可以很直观的看出两者的区别,但是,一些特殊情况就不太好区别。

二、标识符的规则

在js中所有的由我们自主命名的都可以称为标识符,例如:变量命,函数名,属性名都属于标识符

命名一个标识符需要遵守以下规范:

  1. 标识符第一个字符必须是字母、下划线_或美元符号$,其后的字符可以是字母、数字或下划线、美元符号;

  2. 自定义的标识符不能和 JavaScript 中的关键字及保留字同名,但可以包含关键字或保留字;

  3. 标识符不能包含空格;

  4. 标识符不能包含+、-、@、#等特殊字符;

  5. 由多个单词组成的复合标识符命名主要有两种方式:

    (1)使用下划线连接各个单词,每个单词全部小写,例如:dept_name。

    (2)使用驼峰式,其中又分大驼峰和小驼峰。大驼峰的格式是每个单词的首字母大写,其余字母小写,例如:DeptName;小驼峰的格式是第一个单词全部小写,第二单词开始的每个单词首字母大写,其余字母小写,例如:deptName。

三、if...else...条件语句

语法:

前提:一个条件

使用 if 来规定要执行的代码块,如果条件为 true

使用 else if 来规定要测试的新条件,如果第一个条件为 false

使用 else 来规定要执行的代码块,如果前面的条件都为 false

if (条件 1) {
    条件 1 为 true 时执行的代码块
} else if (条件 2) {
    条件 1 为 false 而条件 2 为 true 时执行的代码块
 } else {
    条件 1 和条件 2 同时为 false 时执行的代码块
}
 

四、while和for循环

while循环

while 循环会一直循环代码块,只要指定的条件为 true

while (条件) {
    要执行的代码块
}
 

Do/While 循环是 while 循环的变体。在检查条件是否为真之前,这种循环会执行一次代码块,然后只要条件为真就会重复循环。

do {
    要执行的代码块
}
while (条件);
 
for循环

(1)普通for循环

for (let index = 0; index < myArray.length; index++) {
  console.log(myArray[index]);
}
 

(2)forEach循环

myArray.forEach(function (value) {
  console.log(value);
});
 

缺点:无法中断循环(使用break语句或使用return语句

(3)for–in循环

for-in循环实际是为循环"enumerable"对象而设计的:

var obj = {a:1, b:2, c:3};
    
for (var prop in obj) {
  console.log("obj." + prop + " = " + obj[prop]);
}

// 输出:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

 

也可以用它来循环一个数组:

for (var index in myArray) {    // 不推荐这样
  console.log(myArray[index]);
}
 

不推荐用for-in来循环一个数组,因为数组不像对象,数组的index跟普通的对象属性不一样,是重要的数值序列指标。

总之,for–in是用来循环带有字符串key的对象的方法。

(4)for-of循环

比传统的for循环简洁,同时弥补了forEach和for-in循环的短板。

  • 循环一个数组(Array):
let iterable = [10, 20, 30];

for (let value of iterable) {
  console.log(value);
}
 
  • 循环一个字符串:
let iterable = "boo";

for (let value of iterable) {
  console.log(value);
}
 
  • 循环一个类型化的数组(TypedArray):
let iterable = new Uint8Array([0x00, 0xff]);

for (let value of iterable) {
  console.log(value);
}
 
  • 循环一个Map:
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let [key, value] of iterable) {
  console.log(value);
}

for (let entry of iterable) {
  console.log(entry);
}
 
  • 循环一个 Set:
let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {
  console.log(value);
}
 
  • 循环一个 DOM collection
let articleParagraphs = document.querySelectorAll("article > p");

for (let paragraph of articleParagraphs) {
  paragraph.classList.add("read");
}
 
  • 循环一个拥有enumerable属性的对象

for–of循环并不能直接使用在普通的对象上,但如果我们按对象所拥有的属性进行循环,可使用内置的Object.keys()方法:

for (var key of Object.keys(someObject)) {
  console.log(key + ": " + someObject[key]);
}
 
  • 循环一个生成器(generators)
function* fibonacci() { // a generator function
  let [prev, curr] = [0, 1];
  while (true) {
    [prev, curr] = [curr, prev + curr];
    yield curr;
  }
}

for (let n of fibonacci()) {
  console.log(n);
  // truncate the sequence at 1000
  if (n >= 1000) {
    break;
  }
}
 

五、break和continue

break 语句“跳出”循环,continue 语句“跳过”循环中的一个迭代。

Break 语句
  • 用于跳出switch语句。

  • 用于跳出循环。

  • 中断循环,并继续执行循环之后的代码

for (i = 0; i < 10; i++) {
    if (i === 3) { break; }
    text += "数字是 " + i + "<br>";
}
 

上面的案例指当i等于3的时候,中断for循环。

Continue 语句

continue 语句中断(循环中)的一个迭代,然后继续循环中的下一个迭代。

for (i = 0; i < 10; i++) {
    if (i === 3) { continue; }
    text += "数字是 " + i + "<br>";
} 
 

上面的案例指当i等于3的时候,跳过本次循环。

六、label

break和continue语句都可以与lebel语句联合使用,从而返回代码中特定的位置。可以用于嵌套循环中减少循环次数。

var num=0;
outermost:
for(var i=0; i<10;i++){
	for(var j=0; j<10; j++){
		if(i==5 && j==5){
			break outermost;
		}
		num++;	
	}
}
console.log(num);		//55
 

正常循环num为100,而上面循环为55

var num=0;
outermost:
for(var i=0; i<10;i++){
	for(var j=0; j<10; j++){
		if(i==5 && j==5){
			continue outermost;
		}
		num++;	
	}
}
console.log(num);		//95
 

虽然break和continue语句都可以与lebel语句能够执行复杂的操作,但如果过度使用也会给调试带来麻烦。应该根据实际业务适当使用

回复

我来回复
  • 暂无回复内容