《JavaScript权威指南第六版》学习笔记-语句

语句

表达式语句

1.赋值语句是一类比较重要的表达式语句

greeting = "hello" + name;
i *= 3;复制代码

2.递增运算符(++)和递减运算符(--)

count++;复制代码

3.delete运算符的重要作用是删除一个对象的属性

delete o.x;复制代码

4.函数调用

alert(greeting);
window.close();复制代码
复合语句和空语句

1.复合语句

{
  x = Math.PI;
  cx = Math.cos(x);
  console.log("cos(π)" + cx);
}复制代码

2.JavaScript中没有块级作用域,在语句块中声明的变量并不是语句块私有的

3.当创建一个具有空循环体的循环时,空语句有时是很有用的。

//初始化一个数组a
for(i = 0; i< a.length; a[i++] = 0) ;复制代码

使用了一个单独的分号来表示一条空语句

声明语句

var和function都是声明语句,它们声明或定义变量或函数

1.var

var i;           //一个简单的变量
var j = 0;   //一个带有初始值的变量
var p,q;   //两个变量
var greeting = "hello" + name;    //更复杂的初始化表达式
var x = 2.34, y = Math.cos(0.75), r, theta;     //很多变量
var x = 2, y = x * x;    //第二个变量使用了第一个变量
var x =2,              //更多变量
    f = function(x){return x*x},    //每一个变量都独占一行
    y = f(x);复制代码

(1).如果var语句出现在函数体内,那么它定义的是一个局部变量,其作用域就是这个函数。

(2).如果在顶层代码中使用var语句,它声明的是全局变量,全局变量是全局对象的属性,var声明的变量是无法通过delete删除的。

(3).如果var语句中的变量没有指定初始化表达式,那么这个变量的值初始为undefined.

变量在声明它们的脚本或函数中都是有定义的,变量声明语句会被"提前"至脚本或者函数的顶部。但是初始化的操作则还在原来var语句的位置执行,在声明语句之前变量的值都是undefined.

for(var i = 0;i < 10; i++) console.log(i);
for(var i = 0,j = 10; i < 10;i++,j--) console.log(i*j);
for(var i in o) console.log(i);复制代码

多次声明同一个变量是无所谓的

2.function

(1).关键字function用来定义函数

var f = function(x){return x+1;}    //将表达式赋值给一个变量
function f(x){return x+1;}   //含有变量名的语句复制代码
条件语句

条件语句是通过判断指定表达式的值来决定执行还是跳过某些语句。

1.if

if/else语句通过判断一个表达式的计算结果来选择执行两条分支中的一条

(1).

if(username == null)   //如果username是null或者undefined
username = "John Doe";   //对其进行定义

//如果username是null,undefined,false,0,"",或者NaN,那么给它赋一个新值
if(!username) username = "John Doe";

if(!adress){
  address = "";
  message = "Please specify a mailing address";
}复制代码

(2).当expression为真值时执行statement1,当expression为假值时执行statement2

if(expression){
  statement1
}else{
  statement2
}复制代码

2.else if

else if 语句并不是真正的JavaScript语句,它只不过是多条if/else语句连在一起时的一种惯用写法。

if(n == 1){
  //执行代码块1
}else if(n == 2){
  //执行代码块2
}else if(n == 3){
  //执行代码块3
}else{
  //之前的条件都为false,则执行这里的代码块4
}复制代码

3.switch

switch(n){
  case 1:                      //如果 n === 1,从这里开始执行
  //执行代码块1
  break;                    //停止执行switch语句
  case 2:
  //执行代码块2
  break;
  case 3:
  //执行代码块3
  break;
  default:          //如果所有的条件都不匹配
  //执行代码块4
}复制代码

(1).每个case的匹配操作实际上是"==="恒等运算符比较

(2).表达式和case的匹配并不会做任何类型转换

循环

循环语句(looping statement)就是程序路径的一个回路,可以让一部分代码重复执行。

JavaScript中有4中循环语句:while,do/while,for和for/in

最常用的循环就是对数组元素的遍历

(1).while

var count = 0;
while(count < 10){
  console.log(count);
  count++;
}复制代码

在几乎每一次循环中,都会有一个或多个变量随着循环的迭代而改变。

否则一个初始值为真值的表达式的值永远都是真值,循环也不会结束。

(2).do/while

它是在循环的尾部而不是顶部检测循环表达式,这就意味着循环体至少会执行一次。

function printArray(a){
  var len = a.length,i = 0;
  if(len = 0){
    console.log("Empty Array")
  }else{
    do{
      console.log(a[i])
    }while(++i < len);
  }
}复制代码

(3).for

A.大部分的循环都具有特定的计数器变量。

B.计数器的三个关键操作是初始化,检测和更新。

for(initialize;test;increment){
  statement;
}

initialize;
while(test){
  statement;
  increment;
}复制代码

C.initialize表达式只在循环开始之前执行一次。

每次循环执行之前会执行test表达式,并判断表达式的结果来决定是否执行循环体,如果test计算结果为真值,则执行循环体中的statement.

最后,执行increment表达式

for(var count=0;count<10;count++){
  console.log(count);
}复制代码

D.逗号运算符

var i,j;
for(i = 0, j = 10;i<10;i++,j--){
  sum += i *j;
}复制代码

E.用for循环来遍历链表数据结构,并返回链表中的最后一个对象(也就是第一个不包含next属性的对象);

function tail(o){              //返回链表的最后一个节点对象
  for(;o.next;o = o.next){        //根据判断o.next是不是真值来执行遍历
    return o;
  }
}复制代码

(4).for/in

for(variable in object){
  statement
}复制代码

A.使用for循环来遍历数组元素

for(var i=0;i<a.length;i++){    //i代表了数组元素的索引
  console.log(a[i]);        //输出数组中的每个元素
}复制代码

B.for/in循环则是用来更方便地遍历对象属性成员

for(var p in o){    //将属性名字赋值给变量p
  console.log(o[p]);         //输出每一个属性的值
}复制代码

C.将所有对象属性复制至一个数组中

var o = {x:1,y:2,z:3};
var a = [],i=0;
for(a[i++] in o);复制代码

D.for/in循环可以像枚举对象属性一样枚举数组索引

for(i in a){
  console.log(i);
}复制代码
跳转
  • JavaScript的执行可以从一个位置跳转到另一个位置。

  • break语句是跳转到循环或者其他语句的结束。

  • continue语句是终止本次循环的执行并开始下一次循环的执行。

  • return语句让解释器跳出函数体的执行,并提供本次调用的返回值。

(1).标签语句

通过给语句定义标签,就可以在程序的任何地方通过标签名引用这条语句。

mainloop:while(token != null){
  //忽略这里的代码...
  continue mainloop;   //跳转到下一次循环
  //忽略这里的代码...
}复制代码

(2).break语句

单独使用break语句的作用是立即退出最内层的循环或switch语句。

for(var i = 0;i < a.length;i++){
  if(a[i] == target){
    break;
  }
}复制代码

(3).continue语句

它不是退出循环,而是转而执行下一次循环

for(var i = 0;i<a.length;i++){
  if(!data[i]){
    continue;   //不能处理undefined数据
  }
  total += data[i];
}复制代码

(4).return语句

函数调用是一种表达式,而所有表达式都有值。

函数中的return语句既是指定函数调用后的返回值。

return语句只能在函数体内出现,如果不是的话会报语法错误。当执行到return语句的时候,函数终止执行,并返回expression的值给调用程序。

function square(x){   //一个包含return语句的函数
  return x*x;      //调用结果为4
}
aquare(2);复制代码

(5).throw语句

所谓异常(exception)是当发生了某种异常情况或错误时产生的一个信号。

(6).try/catch/finally语句

其他语句类型

1.with语句

作用域链(scope chain),一个可以按序检索的对象列表,通过它可以进行变量名解析。

with语句用于临时扩展作用域链

不推荐使用

2.debugger语句

这条语句用来产生一个断点(breakpoint),JavaScript代码的执行会停止在断点的位置,这时可以使用调试器输出变量的值,检查调用栈等。

3.'use strict'

"use strict"是ECMAScript引入的一条指令。指令不是语句(但非常接近于语句)。

JavaScript语句小结

|版权声明:本文为summer博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值