JavaScript学习笔记(九)——语句

语句

1、定义:

表达式-----最简单的语句,

单语句:只有一条语句,每一个单语句结尾都要加分号;

复合语句:多条单语句组成 ; 语句组成程序。

空语句:啥都不写 ;

2、if语句:

js的执行引擎:如果执行体只有一条语句,可以省略执行体。

if-else if -else 语句 不是js的标准语法,是程序员利用js引擎的纠错功能实现的。

  var a = 20;
        if (a < 18) {
            alert('未成年');
        } else if (a > 22) {
            alert('可以喝酒结婚')
        } else {
            alert('可以喝酒');
        }

 

3、switch语句

switch 语句用于基于不同的条件来执行不同的动作。

使用 switch 语句来选择要执行的多个代码块之一。

语法如下:

switch(n) {
    case 10: 执行代码块 1
    break; 
    case 20: 执行代码块 2
    break; 
    default: 与 case 1 和 case 2 不同时执行的代码 
}

工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>switch语法</title>
</head>
<body>
​
<p>点击下面的按钮来显示今天是周几:</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction(){
    var x;
    var d=new Date().getDay();
    switch (d){
        case 0:x="今天是星期日";
        break;
        case 1:x="今天是星期一";
        break;
        case 2:x="今天是星期二";
        break;
        case 3:x="今天是星期三";
        break;
        case 4:x="今天是星期四";
        break;
        case 5:x="今天是星期五";
        break;
        case 6:x="今天是星期六";
        break;
    }
    document.querySelector("demo").innerHTML=x;
}
</script>
​
</body>
</html>

·使用 default 关键词来规定匹配不存在时做的事情

switch 和 if 语句区别:

switch 更具有业务性

if语句 更具有逻辑性

4、 for语句(重要)

循环可以将代码块执行指定的次数。

如果希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。

我们可以这样输出数组的值:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>for循环</title>
</head>     
<body>
​
<script>
cars=["BMW","Volvo","Saab","Ford"];
for (var i=0;i<cars.length;i++){
    document.write(cars[i] + "<br>");
}
   console.log(i)
</script>
​
</body>
</html>

不同类型的循环

JavaScript 支持不同类型的循环:

  • for - 循环代码块一定的次数

  • for/in - 循环遍历对象的属性

  • while - 当指定的条件为 true 时循环指定的代码块

  • do/while - 同样当指定的条件为 true 时循环指定的代码块

for循环

for 循环是在希望创建循环时常会用到的工具。

语法如下:

for (语句 1; 语句 2; 语句 3)
{
    被执行的代码块
}
​
for (语句 1; 语句 2;)
{
    被执行的代码块;
    语句 3;
}
  • 语句 1 (代码块)循环开始前执行 starts.

  • 语句 2 定义运行循环(代码块)的条件

  • 语句 3 在每次循环(代码块)已被执行之后执行

考点:

//分析下面的结果 ?
        //第一题
        var i = 0;
        for (; i++, i < 5;) {
            console.log(i);
        } //1 2 3 4
​
        //第二题:闭包的作用域
        var arr = [];
        for (var i = 0; i < 4; i++) {
            arr[i] = function () {
                console.log(i)
            };
        }
        arr[0]() //结果:4  
        arr[1]() //结果:4
        /* 原因:
​
         var arr=[]{
            var i=0; //变成1,2,3
            if(i<4){
                arr[0] = function() {console.log(i)}
                //不取值  函数没有调用
                i=i+1;  
                if(1<4){
                arr[1] = function() {console.log(i)}
                 i=i+1; 
                 ...
                if(4<4){
​
                }  else{跳出循环}
                
                }
            }
        } 
        最后执行 arr[0]()  // 其实就是i在运行过程中一直在变化  最后加到了4
        */
​
        for (var j = 0; j < 4; j++) {
            arr[j];
        }
​
​
        //第三题
        for (var i = 0, j = 6; i < 4, j > 0; i++, j--) {
            console.log(i);
        } //考点:由j>0控制 ,一共打印5次 
        //结果 j:6 5 4 3 2 1      i输出:0 1 2 3 4 5

 

  //for中的业务条件筛选
        var arr = [{
                age: 21,
                name: 'karen',
                rank: 580
            },
            {
                age: 10,
                name: 'jack',
                rank: 380
            },
            {
                age: 12,
                name: 'marry',
                rank: 540
            },
            {
                age: 23,
                name: 'rose',
                rank: 880
            }
        ]
        /* //1.打印名字
        for (var i = 0; i < arr.length; i++) {
            console.log(arr[i].name);
        } */
​
        //2.打印大于18岁的名字
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].age > 18) {
                console.log(arr[i].name);
            }
        }
​
        //3.打印年龄大于18  rank 大于480 的名字
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].age > 18 && arr[i].rank > 480) {
                console.log(arr[i].name);
            }
        }
​
        //4.打印年龄小于18  rank大于400的对象的名字  拼接一个字符串“少年班”  大于18 且rank大于480  的普通班   其余的啥也不是
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].age < 18 && arr[i].rank > 480) {
                console.log(arr[i].name + '少年班');
            } else if (arr[i].age >= 18 && arr[i].rank > 480) {
                console.log(arr[i].name + '普通班');
            } else {
                console.log(arr[i].name + '啥也不是');
            }
        }

for循环嵌套思想:

  1. 不要管内部外部for 的执行问题,重点关注每一个for都是遍历自己的数组;

  2. for 内部有条件语句和数据处理得到的数组,然后用for遍历

  3. for大括号会执行数组的元素个数这么多次,每次执行时 i 就是元素的下标。

     

5、while 语句

  1. 语法

    while (A)
    {
        业务需要执行的代码
    }
    //A判定为真,执行业务 循环
    //A判定为假,直接结束while语句
    ​
    var i=0
    for(;i<len;){
        //需要执行的代码
        i++;
    }

     

  2. 怎样判断选择while和for 循环?

    • while循环:如果有一个业务需要重复执行,但是总有一次执行会让他停下来不再执行,不知道循环次数

    • for 循环: 一个业务需要重复执行,但是是已知次数

6、continue和break 语句

 

  1. break 语句用于跳出循环。

  2. continue 用于跳过循环中的一个迭代,继续执行下一个迭代(如果有的话)。

    break 语句举例如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    <body>
    ​
    <p>点击按钮,测试带有 break 语句的循环。</p>
    <button onclick="myFunction()">点击这里</button>
    <p id="demo"></p>
    <script>
    function myFunction(){
        var x="",i=0;
        for (i=0;i<10;i++){
            if (i==3){
                    break;
                }
            x=x + "该数字为 " + i + "<br>";
        }
        document.getElementById("demo").innerHTML=x;
    }
    </script>
    ​
    </body>
    </html>

    continue 语句举例如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    <body>
    ​
    <p>点击下面的按钮来执行循环,该循环会跳过 i=3 的步进。</p>
    <button onclick="myFunction()">点击这里</button>
    <p id="demo"></p>
    <script>
    function myFunction(){
        var x="",i=0;
        for (i=0;i<10;i++){
            if (i==3){
                continue;
            }
            x=x + "该数字为 " + i + "<br>";//9行
        }
        document.getElementById("demo").innerHTML=x;
    }
    </script>
    ​
    </body>
    </html>

     

7、 label 语句

 

标签语句,在语句之前加上冒号:可标记 JavaScript 语句。

语法如下:

label: statements

break 和 continue可以使用标签语句。

var a = 0;
forhere:
for (var i = 0; i < 10; i++) {
   for (var j = 0; j < 10; j++) {
       if(j == 5){
             break forhere;
            //这里终止的是外面的for循环
            //体会continue、break后面加和不加语句标签的区别;
            
       }
       a++;
    }
}
console.log(a);
​

并且:

continue 语句(带有或不带标签引用)只能用在循环中。

break 语句(不带标签引用),只能用在循环或 switch 中。

通过标签引用,break 语句可用于跳出任何 JavaScript 代码块:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
​
<script>
cars=["BMW","Volvo","Saab","Ford"];
list:{
    document.write(cars[0] + "<br>"); 
    document.write(cars[1] + "<br>"); 
    document.write(cars[2] + "<br>"); 
    break list;
    document.write(cars[3] + "<br>"); 
    document.write(cars[4] + "<br>"); 
    document.write(cars[5] + "<br>"); 
}
</script>
​
</body>
</html>

8、throw抛出异常

1.立即停止正在执行的程序,跳转至就近的逻辑异常处理程序。

例子:

function factorial (n) {
    if(isNaN(n)) throw new Error('请输入数字,HOHO');
    if(n == 1) return 1;
    return n*factorial(n-1);//递归
}
var n = factorial(3);//3*factorial(2)--3*2*factorial(1)--3*2*1
console.log(n);//6
​
var n = factorial('a05');
console.log(n);
​
var n = factorial(5);
console.log(n);

2.throw抛出异常该异常可以是 JavaScript 字符串、数字、逻辑值或对象。

3.js语言,是脚本语言,当运行过程终于到了错误就停止运行后面的代码。

9、try-catch-finally语句

  1. try-catch-finally是JavaScript的异常处理机制。

  2. 语法

    try{
           //我们自认为没有错误的 处理业务的代码
        }
    catch(e){
           //上面的业务处理代码报错了,这里才会执行
           //console.log(e);
        }
    finally{
           //这里总是会执行的,理解为领导总结发言
        }
        //语句  不会影响到后面代码的执行。

    异常对象e里面有两个属性name和message,分别代表错误类型和错误描述信息。

  3. 例子

    try {
                console.log(1);
                throw new Error('出错了');
                console.log(2); //不会打印2
            } catch (e) {
                console.log(e.message); //打印throw里面的内容,里面写其他的字符串也行
            } finally {
                console.log(4);
            }

     

10、with语句(了解)

例子:

<script>
        var a = 20;
        var b = 10;
        console.log(window.b); //window 全局变量 可省略
​
        var obj = {
            age: 20,
            name: "karen"
        };
        with(obj) {
            console.log(name);
        }
        /* //我们平常使用的这里代码有一个隐式操作 with(window){
​
        } */
        console.log(age); //报错
    </script>

不建议使用,语法有性能问题,es6 解决了这个问题

新技术:解构赋值

var {age,name}=obj;
console.log(age)

 

posted @ 2022-06-17 10:27  小狐狸ya  阅读(26)  评论(0编辑  收藏  举报