一、 声明语句
var和function都是声明语句。声明或定义变量或函数。
var
声明一个或者多个变量。语法如下:
1 var a ; 2 var b = 1; 3 var c, d; 4 var e = 3; f = 5
如果var语句出现在函数体内,那么他定义的是一个局部变量。它的作用域就是这个函数。
如果在顶层代码中使用var语句,则声明的是一个全局变量。全局变量是全局对象的属性。var声明的变量无法通过delete删除的。
如果var定义的变量没有初始化表达式,那么这个变量的值初始化时undefined
function
关键字function用来定义函数
var f = function(x) { return x+1 } //将表达式赋值给一个变量 function(x) { return x+1 } //含有变量名的语句
函数声明语句通常只出现在JS代码的最顶层,也可以嵌套在其他函数体内。但在嵌套时,函数声明只能出现在所嵌套的顶部。不能定义在if语句,while循环或者其他任何语句中。
二、条件语句
if
if语句是一种基本的控制语句。举个栗子:
var age = 18 if(age < 19) { console.log("123456") } //123456 var life = 60; if (life >= 70) { console.log('233333') }else { console.log('--------') } //----------
三、循环语句
while
同jf一样是基本的控制语句。举个栗子:
var a = 0; while(a < 10) { console.log(a) a++ }
do/while
do/while和while非常相似,只不过它是在循环的尾部而不是顶部检测循环表达式,这就意味着循环体至少会执行一次。举个栗子:
var text = "" var i = 0; do { text += "<br>数字为 " + i; i++; } while (i < 5) { document.getElementById("demo").innerHTML = text; }
for
for循环语句的语法如下:
for (initialize;test;increment) { content } //initialize,test,increment 三个表达式之间用分号分隔,分别负责初始化操作、循环条件和计数器变量的更新
举个for循环的栗子(相信这个栗子大多数都能看的明白233333333):
//遍历0-9之间的数字 for ( var i = 0; i < 10; i++ ){ console.log(i) } //0 //1 //2 //3 //4 //5 //6 //7 //8 //9
for/in
for/in语句也是用for关键字。举个栗子:
var person = { a:"John", b:"Doe", age:25 }; var text = ""; var x; for (x in person) { text += person[x]; } //person 是一个表达式,是一个对象
break语句
单独使用break语句的作用是立即退出最内层的循环或者switch语句。语法如下:
break;
attention: 在循环中,不论出现什么原因,只要不想继续执行整个循环,就可以用break来提前退出。
当循环终止条件非常复杂时,在函数体内使用break语句实现这些条件判断的做法要比直接在循环表达式中写出这个复杂终止条件的做法简单很多。
continue 语句
continue语句和break语句非常类似,但是它不是退出循环,而是转而执行下一次循环。
当执行到continue语句的时候,当前的循环逻辑就终止了,随即执行下一次循环,在不同类型的循环中,continue的行为也有所区别:
在while循环中,在循环开始处指定的expression会重复检测,如果检测结果为true,循环体会从头开始执行。
在do/while循环中,程序的执行直接跳到循环结尾处,这时会重新判断循环条件,之后才会继续下一次循环。
在for循环中,首先计算自增表达式,然后再检测test表达式,用以判断是否执行循环体。
在for/in循环中,循环开始遍历下一个属性名,这个属性名赋给了指定的变量。
continue语句在while和for循环中的区别:
while直接进入下一轮的循环条件判断,但for循环首先计算increment表达式,然后判断循环条件
return语句
return语句是指定函数调用的返回值。return语句的语法如下:
return;
return语句只能在函数体内出现,如果不是的话会报语法错误,当执行到return语句的时候,函数终止执行,并且返回expression的值给调用程序
function www(x) { return x*x //一个包含return的函数 } www(5); //结果为25
如果没有return语句,则函数调用仅次于执行函数体内的每一条语句直到函数结束
debugger语句
debugger通常什么都不做,然而,当调试程序可用并运行的时候,JS解释器将会(非必须)以调试模式运行。实际上,这条语用来产生一个断点(breakpoint)JS代码的执行会停止在断点的位置,这时可以使用调试器输出变量的值、检查调用栈等。
use strict
use strict是ECMAScript5引入的一条指令。目的是说明(脚本或者函数中)后续的代码将会解析为严格代码。
如果顶层使用了这个指令,那么既是严格模式。
严格模式和非严格模式的区别如下:
1 在严格模式中禁止使用with语句
2 在严格模式中,所有的变量要先声明
3 在严格模式中,调用的函数(不是方法)中的this值是undefined。(在非严格模式下,调用的函数中的this值总是全局对象),可以利用这种特性来判断JS实现时是否支持严格模式;
var hasStrictModel = (function () { 'use strict; return this === undefined }());
4 在严格模式中,当通过call()或者apply()来调用函数时,其中的this值就是通过call()或apply()传入的第一个参数(在非严格模式中,null和undefined值被全局对象和转换为对象的非对象值所代替)
5 在严格模式中,给只读属性和不可拓展的对象创建新成员都将抛出一个类型错误