即流控制语句:一个或多个关键字完成给定任务
if语句
if(condition){ dosomething();}else { dosomething()}condition可以使任何表达式,如果不是布尔值,会自动调用Boolean()转换为布尔值 始终使用代码块(花括号)
do-while语句 后测试循环语句,至少执行一次
while语句 前测试循环语句,先对出口条件求值
for语句
for(初始化表达式;控制表达式;循环后表达式){}上面三个表达式都是可选的 前测试循环语句,但是具有执行循环之前初始化变量(var i = 0)和定义循环后要执行的代码能力(i++);终止条件:i<10; while循环做不到的for循环同样做不到;for循环变量初始化可以在外部执行,与在for循环中声明的效果是一样的(变量提升,由于ECMAScript中不存在块级作用域,循环内部定义的变量也可以在外部访问到)
for-in语句 枚举对象的属性,一种精准的迭代语句
for(PRoperty in expression){ statement}没有顺序,因此属性名的顺序是不可预测的;如果要迭代对象的变量值为null或undefined,for-in语句会抛出错误,ECMAScript5更正了这一行为,不在抛出错误,而只是不执行循环体。为了保证兼容性,建议使用for-in循环之前,先检测确认该对象的值不是null或undefinedlabel语句
start:for(){ }将来有break或continue语句引用
break和continue语句 循环中精确地控制代码的执行。break立即退出循环,而continue语句虽然立即退出当次循环,从循环顶部继续执行; 而break outemost;带了一个参数,要返回到的标签:用于多个循环嵌套的情况,能一次退出多个循环,否则,只能退出一个循环;
with语句 简化多次编写同一个对象的工作,但是后面的高版本不支持了
with(location)statement在with语句的代码块内部,每个变量被认为是一个局部变量,而如果在局部变量中找不到该变量的定义,就会查询location对象中是否有同名属性,如果发现了同名属性,则以location对象属性的值作为变量的值; 严格模式下不允许使用with语句,开发大型应用时,不建议使用with
switch 语句 每个case后面都添加一个break语句,避免同时执行多个case代码的情况;假如确实需要混合集中情况,不要忘了在代码中添加注释,说明有意省略了break关键字 switch 可以使用任何数据类型,字符串、对象都没有问题。switch语句在比较值时使用的是全等操作符,不会发生类型转换。
ECMAScript中的函数使用function关键字来声明
function functionName (arg0,arg1,...,argN){ statements}函数调用 :函数名+圆括号和参数(多个用逗号隔开); 可以通过return语句返回要返回的值;return语句后的任何代码都不会执行 函数要么始终返回一个值,要么永远都不要返回值; eval arguments 不要作为函数和参数名,不要出现同名参数;
理解参数 ECMAScript 中的参数在内部使用数组表示的,不关心数组中包含哪些参数,函数内部可以通过arguments对象来访问函数数组,从而获得传递给函数的每个参数 arguments只是与数组类似,并不是Array的实例,可以用方括号访问它的每个元素,arguments[0],length属性可以用来确定传递进来多少参数 arguments,它的值永远与对应命名参数的值保持同步;arguments和命名参数的内存空间是独立的,但是他们的值会同步,但是这种影响是单向的:修改命名参数不会改变arguments中的对应值,但是修改arguments中的值会改变命名参数的值(函数内部的值变化);没有传递值的命名参数将自动服务undefined(定义了变量但是没有初始化);严格模式对arguments进行了限制:arguments的值设置不会改变命名参数,并且重写arguments的值会导致语法错误 ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。
没有重载 同名函数会覆盖前面的
未指定返回值的函数返回的是一个特殊undefined值 由于不存在函数签名的特性,ECMAScript函数不能重载
新闻热点
疑难解答