龙空技术网

一分钟复习-JavaScript基础语法(3)

小小de笑 53

前言:

而今我们对“js跳出function”大致比较关切,我们都需要分析一些“js跳出function”的相关知识。那么小编在网络上收集了一些关于“js跳出function””的相关内容,希望同学们能喜欢,各位老铁们一起来了解一下吧!

语句

表达式语句,最简单也是最常见的语句。

var a = 1

复合语句,使用逗号或是花括号将几个表达式,连接在一起,形成一个新的表达式。

{    var a = 1;    var b = 2;}

空语句,直接使用“;”就可以了。常见的是在循环中。

for(;;){}

声明语句

“var”可以用于声明一个或是多个变量。

var a = 1, b = 2 

“function”,用于声明函数。

function a(n){    return n}

条件语句

“if”、“else if”、“else”,“if”加上判断条件,当判断条件为真,则会执行“if”的复合语句,反之则跳过。“else”只能当使用过“if”后,才可以使用,表示之前判断条件都不成立时,则执行“else”的复合语句。如果想在同级有多个判断情况分支,则中间的判断要使用“else if”。根据判断需要自行组合。条件语句支持嵌套使用。

var a = 1if(a==0){    a = 5}// a = 1,因为a!=0,所以if的判断条件不成立,则不执行if的复合语句var a = 1if(a==0){    a = 5}else{    a = 3}// a = 3,因为a!=0,所以if的判断条件不成立,则执行else的复合语句var a = 1if(a==0){    a = 5}else if(a==1){    a = 4}else if(a==4){    a = 7}else{    a = 3}// a = 4,因为a!=0,但是a==1,所以if的判断条件不成立,而第一个else if成立,则执行第一个else if的复合语句。由于第一个else if和第二个else if是同级的,所有第一个else if的复合语句运行完以后,会跳出这级判断,不会进行下面的判断了var a = 1if(a==0){    a = 5}else{    if(a==1){        a = 2    }else{        a = 3    }}// a = 2

“switch”,结构化判断方式,用关键词switch来指定判断条件,用case来做条件判断的各种分支情况,用default来表示都不满足的解决方式,必须放在最后。case结果内可以加上break来中断跳出判断,要不然会继续判断。

var a = 1switch(a){    case 1:        a = 2    case 2:        a = 3    default:        a = 4}// a = 4,因为a==1,所以执行case 1,这时候a = 2,然后会继续向下判断。因为a==2,所以执行case 2,这时候a = 3。然后依次继续,最后a = 4var a = 1switch(a){    case 1:        a = 2        break    case 2:        a = 3        break    default:        a = 4        break}// a = 2,因为a==1,所以执行case 1,这时候a = 2,这时候有个break,跳出switch。所以最后a = 2

循环语句

“while”,直到不满足循环条件跳出循环。

var a = 1while(a<3){    console.log(a)  // 输出1,2。一开始a=1且<3,所以进入循环,输出1,然后a=2,但是a<3,所以又再一次进入循环。输出2,然后a=3,a==3,所以不满足<3的条件,跳出循环    a++}

“do/while”,先进入循环体运行,运行完后再判断循环条件,直到不满足循环条件跳出循环。

var a = 1do{    console.log(a)  // 输出1。    a++}while(a<1)

“for”,一种循环的方式,for(initialize;test;increment)

for(var i=0;i<10;i++){    console.log(i)}

“for/in”,for(variable in object)statement,variable通常是一个变量名,也可以是一个可以产生左值的表达式或者一个通过var语句声明的变量,总之必须是一个适用于赋值表达式左侧的值。object是一个表达式,这个表达式的计算结果是一个对象。

for(var i in a){    console.log(i)}

跳转语句

“break”,单独使用可以立即退出当前层的循环或switch语句。

for(var i=0;i<10;i++){    if(i==2){        break;    }    consoloe.log(i)     // => 会输出:0 1,当i==2,则会跳出循环}var a = 1switch(a){    case 0:        console.log(0)  // 没有输出,a==1,直接跳出switch    case 1:        break    default:        break}

“continue”,直接跳过接下来的语句,完成这轮循环,回到循环判断条件处,继续开始。

for(var i=0;i<10;i++){    if(i==2){        break;    }    consoloe.log(i)     // => 会输出:0 1,当i==2,则会跳出循环}

“break”、“continue”结合标签的高级用法,可以制定跳出(进行下一轮)循环。JavaScript支持标签用法,identifier:statement,break identifier,continue identifier。

a:for(var i=0;i<10;i++){    for(var j=0;j<10;j++){        console.log(j)        if(i==1){            break a;        // 输出0,1,2,3,4,5,6,7,8,9,0。break会直接跳出标签a指定的那个循环        }    }}a:for(var i=0;i<2;i++){    for(var j=0;j<10;j++){        console.log(j)        if(j>0){            continue a;     // 输出0,1,0,1。continue会直接跳到标签a指定的那个循环,开始新的一轮        }    }}

“return”,只能用于函数内,用于跳出函数,并且返回值。如果return单独使用不带返回值,则会返回undefined。

function v1(){    return    consoloe.log(1)}function v2(){    return 1}var a = v1()            // a = undefined,没有打印1,因为return跳出函数后面的不执行了var b = v2()            // b = 1

“throw”,抛出异常(当发生某种异常情况或错误时产生的一个信号),就是用信号通知发生了错误或异常情况。

function x(){    throw new Error('抛出一个异常')}

“try/catch/finally”,捕获异常,随即采取必要手段从异常中恢复。try处理异常所在的代码块。catch捕获到异常后处理,后面接的的圆括号内容是异常对象值。finally内的代码,在最后一定会执行。catch、finally可选。

try{    //通常来讲,这里的代码会从头执行到尾而不会产生任何问题,    //但是有时会抛出一个异常,要么是由throw语句直接抛出异常,    //要么是通过调用一个方法间接抛出异常}catch(e){    //当且仅当try语句块抛出了异常,才会执行这里的代码    //这里可以通过局部变量e来获得对Error对象或者抛出的其他值的引用    //这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常    //还可以通过throw语句重新抛出异常}finally{    //不管try语句块是否抛出异常,这里的逻辑总是会执行,终止try语句块的方式有:    // 1)正常终止,执行完语句块的最后一条语句    // 2)通过break、continue或return语句终止    // 3)抛出一个异常,异常被catch从句捕获    // 4)抛出一个异常,异常未被捕获,继续向上传播}

“with”,用于临时扩展作用域链,将object添加到作用域链的头部,然后执行语句,最后把作用域链恢复到原始状态。在严格模式中是禁止使用with语句的,并且在非严格模式里,也不推荐使用。

// 操作document.forms[0].address.valuewith(document.forms[0]){    name.value = ""    address.value = ""    email.value = ""}

“debugger”,当调试模式可以使用的时候,运行到这句话,类似断点,将停止下来。

if(isDebugger){    debugger}

“use strict”,ECMAScript 5引入的一条指令,运行到这句后,将启动严格模式。严格模式的优点是提高代码解析与运行速度;禁用一些不合理的语法,减少代码的怪异行为。缺点是某些代码在严格模式下会报错,尤其引入公用与第三方模块的时候需要注意;有些严格模式的特性在不同浏览器的支持情况不同,需要注意兼容问题。

严格模式与非严格模式的区别:

1.禁用with语法,使用将报错。因为解析with语法时作用域的情况会非常复杂,严重影响代码的解析与运行速度;

2.禁止删除变量与函数;

3.属性描述符(propertyDescriptor)相关能改变属性描述符的方法有Object.defineProperty、Object.defineProperties、Reflect.defineProperty、Reflect.defineProperties、Object.freeze、Object.seal;获取一个属性描述符可以用Object.getOwnPropertyDescriptor、Object.getOwnPropertyDecriptors,ES6中还有Reflect.getOwnPropertyDescriptor、Reflect.getOwnPropertyDescriptors;

4.给不允许扩展的object增加属性会报错;

5.给未申明的变量赋值会报错;

6.定义object时属性重名会报错;

7.形参重复时会报错;

8.eval有独立作用域,eval不能作为变量名或函数名,类似关键字;

9.arguments是形参的副本(类似浅拷贝);arguments不能作为变量名或函数名,类似关键字;

10.禁用caller与callee。

标签: #js跳出function