switch 评估一个表达式,将表达式的值与case
子句匹配,并执行与该情况相关联的语句。
一个 switch 语句首先会计算其 expression。然后,它将从第一个 case 子句开始直到寻找到一个其表达式值与所输入的 expression 的值所相等的子句。
- switch (expression) {
- case value1:
- // 当 expression 的结果与 value1 匹配时,执行此处语句
- [break;]
- case value2:
- // 当 expression 的结果与 value2 匹配时,执行此处语句
- [break;]
- ...
- case valueN:
- // 当 expression 的结果与 valueN 匹配时,执行此处语句
- [break;]
- [default:
- // 如果 expression 与上面的 value 值都不匹配,执行此处语句
- [break;]]
- }
通常与 break 或 default 关键字一起使用。两者都是可选的:
break 关键字用于跳出switch代码块。会终止switch代码块的执行。 如果忽略该关键字,swith 语句的下一个代码块会被执行。
default 关键字 来规定匹配不存在时做的事情。 default 关键字在 switch 语句中只能出现一次。虽然是可选参数,但是建议都使用该参数,在不是我们期望的情况下,可以使用它输出信息。
数组Array
对象支持在单个变量名下存储多个元素,并具有执行常见数组操作的成员。
在 JavaScript 中,数组不是基本类型,而是具有以下核心特征的 Array
对象:
处理数据
[Array.prototype.pop()]
从数组中移除最后一个元素并返回该元素。
- const fruits = ['Apple', 'Banana', 'Orange'];
- const removedItem = fruits.pop();
- console.log(fruits);
- // ["Apple", "Banana"]
- console.log(removedItem);
- // Orange
[Array.prototype.push()]
在数组末尾添加一个或多个元素,并返回数组新的 length
。
- const fruits = ['Apple', 'Banana'];
- const newLength = fruits.push('Orange');
- console.log(fruits);
- // ["Apple", "Banana", "Orange"]
- console.log(newLength);
- // 3
使用 [splice()]
方法从 fruits
数组中移除最后 3 个元素。
- const fruits = ['Apple', 'Banana', 'Strawberry', 'Mango', 'Cherry'];
- const start = -3;
- const removedItems = fruits.splice(start);
- console.log(fruits);
- // ["Apple", "Banana"]
- console.log(removedItems);
- // ["Strawberry", "Mango", "Cherry"]
使用 [shift()]
方法从 fruits
数组中移除第一个元素。
- const fruits = ['Apple', 'Banana'];
- const removedItem = fruits.shift();
- console.log(fruits);
- // ["Banana"]
- console.log(removedItem);
- // Apple
使用 [splice()]
方法从 fruits
数组中移除前 3 个元素。
- const fruits = ['Apple', 'Strawberry', 'Cherry', 'Banana', 'Mango'];
- const start = 0;
- const deleteCount = 3;
- const removedItems = fruits.splice(start, deleteCount);
- console.log(fruits);
- // ["Banana", "Mango"]
- console.log(removedItems);
- // ["Apple", "Strawberry", "Cherry"]
使用 [splice()]
方法将 fruits
数组中的最后两个元素替换为新元素。
- const fruits = ['Apple', 'Banana', 'Strawberry'];
- const start = -2;
- const deleteCount = 2;
- const removedItems = fruits.splice(start, deleteCount, 'Mango', 'Cherry');
- console.log(fruits);
- // ["Apple", "Mango", "Cherry"]
- console.log(removedItems);
- // ["Banana", "Strawberry"]
使用 [for...of]
循环遍历 fruits
数组,将每一个元素打印到控制台。
- const fruits = ['Apple', 'Mango', 'Cherry'];
- for (const fruit of fruits) {
- console.log(fruit);
- }
- // Apple
- // Mango
- // Cherry
但 for...of
只是遍历任意数组的众多方法之一;更多方法,参见循环与迭代
多维数组:JavaScript它本身是没有多维数组的概念,因为在JavaScript中 数组元素的数据类型可以是任意数据类型。假设在一个数组中有一些数组元素的的类型还是数组 这个时候我们就将它称之为多维数组!
var seats = new Array(new Array);
赋值
- var seats = [[false,true,false,true,true],
- [false,true,false,false,true];
二维数组的行数:arr.length;相应行的列数:arr[0].length //第一行的长度 以上例来算此值为2
- for (var i = 0; i < seats.length; i++){
- for (var j = 0; j < seats[i].length; j++ ){
- n = i*seats[i].length + j;
- }
- }
confirm 显示一个具有一个可选消息和两个按钮 (确定和取消) 的模态对话框。
- if (window.confirm("Do you really want to leave?")) {
- window.open("exit.html", "Thanks for Visiting!");
- }
nsIPromptService
这个方法。如果需要,作为第一个参数传递的值将转换为布尔值。如果省略该参数或参数值为 0
、-0
、[null]
、false
、[NaN]
、[undefined]
,或空字符串(""
),则该对象具有的初始值为 false
。所有其它值,包括任何对象,空数组([]
)或字符串 "false"
,都会创建一个初始值为 true
的对象。
注意不要将基本类型中的布尔值 true
和 false
与值为 true
和 false
的 Boolean
对象弄混了。其值不是 [undefined]
或 [null]
的任何对象(包括其值为 false
的布尔对象)在传递给条件语句时都将计算为 true
。例如,以下 [if]
语句中的条件评估为 true
:
- const x = new Boolean(false);
- if (x) {
- // 这里的代码会被执行
- }
基本类型的布尔值不受此规则影响。例如下面的 [if]
语句的条件为假:
- const x = false;
- if (x) {
- // 这里的代码不会执行
- }
不要用创建 Boolean
对象的方式将一个非布尔值转化成布尔值,直接将 Boolean
当做转换函数来使用即可,或者使用[双重非(!!)运算符]
- const x = Boolean(expression); // use this...
- const x = !!(expression); // ...or this
- const x = new Boolean(expression); // don't use this!
对于任何对象,即使是值为 false
的 Boolean
对象,当将其传给 Boolean
函数时,生成的 Boolean
对象的值都是 true
。
- const myFalse = new Boolean(false); // initial value of false
- const g = Boolean(myFalse); // initial value of true
- const myString = new String('Hello'); // string object
- const s = Boolean(myString); // initial value of true
当使用非严格相等(==
)来比较一个对象和布尔原始值时,最重要的是需要弄明白最终比较的是什么。请看一下的示例:
- if ([]) { console.log("[] is truthy")} // logs "[] is truthy"
- if ([] == false) { console.log("[] == false")} // logs "[] == false"
[]
是真值而 [] == false
也同时成立的原因是:非严格比较 [] == false
会将 []
的原始值和 false
进行比较。而获取 []
的原始值时,JavaScript 引擎会首先调用 [].toString()
。其结果为 ""
,也是最终和 false
一起比较的值。换句话说,[] == false
等价于 "" == false
,而 ""
是假值——这也解释了为什么会得到这一结果。
while循环:只要指定条件为 true,循环就可以一直执行代码块。
- while (i<5)
- {
- x=x + "The number is " + i + "
"; - i++;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <script type="text/javascript">
-
- var seats = [[false,true,false,true,true,true,false,true,false],
- [false,true,false,false,true,false,true,true,true],
- [true,true,true,true,true,true,false,true,false],
- [true,true,true,false,true,false,false,true,false]];
- var n = -1;
-
- function initSeats(){
- for (var i = 0; i < seats.length; i++){
- for (var j = 0; j < seats[i].length; j++ ){
- n = i*seats[i].length + j;
- if(seats[i][j]){
- document.getElementById("seat" + n).src = "seat_avail.png";
- document.getElementById("seat" + n).alt = "available";
-
- }
- else{
- document.getElementById("seat" + n).src = "seat_unavail.png";
- document.getElementById("seat" + n).alt = "unavailable";
- }
- }
- }
- }
-
- function findSeat(){
-
- if (n >= 0){
- n = -1;
- initSeats();
- }
-
- var i = 0;
- var finished = false;
- while((i < seats.length) && !finished){
- for (var j = 0; j < seats[i].length; j++ ){
- n = i*seats[i].length + j;
- if (seats[i][j] && seats[i][j+1] && seats[i][j+2]){
- var accept = confirm("do you want to sit in row" + (i+1) + " seat" + (j+1) + "through" + (j+3) + "?");
- if (accept){
- document.getElementById("seat" + n).src = "seat_select.png";
- document.getElementById("seat" + n).alt = "your seat";
- document.getElementById("seat" + ( n + 1 )).src = "seat_select.png";
- document.getElementById("seat" + ( n + 1 )).alt = "your seat";
- document.getElementById("seat" + ( n + 2 )).src = "seat_select.png";
- document.getElementById("seat" + ( n + 2 )).alt = "your seat";
- finished=true;
- break;
- }
- else{
- document.getElementById("seat" + n).src = "seat_avail.png";
- document.getElementById("seat" + n).alt = "available";
- document.getElementById("seat" + ( n + 1 )).src = "seat_avail.png";
- document.getElementById("seat" + ( n + 1 )).alt = "available";
- document.getElementById("seat" + ( n + 2 )).src = "seat_avail.png";
- document.getElementById("seat" + ( n + 2 )).alt = "available";
- }
- }
- }
- i++;
- }
- }
- </script>
- </head>
-
- <body onload="initSeats();">
- <div style="margin-top:100px; text-align:center">
- <img id="seat0" src="" alt="" />
- <img id="seat1">
- <img id="seat2">
- <img id="seat3">
- <img id="seat4">
- <img id="seat5">
- <img id="seat6">
- <img id="seat7">
- <img id="seat8"><br>
- <img id="seat9">
- <img id="seat10">
- <img id="seat11">
- <img id="seat12">
- <img id="seat13">
- <img id="seat14">
- <img id="seat15">
- <img id="seat16">
- <img id="seat17"><br>
- <img id="seat18">
- <img id="seat19">
- <img id="seat20">
- <img id="seat21">
- <img id="seat22">
- <img id="seat23">
- <img id="seat24">
- <img id="seat25">
- <img id="seat26"><br>
- <img id="seat27">
- <img id="seat28">
- <img id="seat29">
- <img id="seat30">
- <img id="seat31">
- <img id="seat32">
- <img id="seat33">
- <img id="seat34">
- <img id="seat35"><br>
- <input type="button" id="seat" value="Find Seats" onclick="findSeat();">
-
- </div>
-
- </body>
- </html>