关于JavaScript的阶段性学习总结(Part-One)

31 阅读21分钟

JS 基础介绍

1.什么是javascript?

定义:JavaScript 是一种脚本编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新——交互式的地图、2D/3D 动画、滚动播放的视频等等——JavaScript 就在其中。它是标准 Web 技术蛋糕的第三层,其中 HTML 和 CSS 我们已经在学习区的其他部分进行了详细的讲解。

  • HTML 是一种标记语言,用来结构化我们的网页内容并赋予内容含义,例如定义段落、标题和数据表,或在页面中嵌入图片和视频。
  • CSS 是一种样式规则语言,可将样式应用于 HTML 内容,例如设置背景颜色和字体,在多个列中布局内容。
  • JavaScript 是一种脚本语言,可以用来创建动态更新的内容,控制多媒体,制作图像动画,还有很多。(好吧,虽然它不是万能的,但可以通过简短的代码来实现神奇的功能。)

详情解读请参考ACM专业解释

2.javascript在网页上的作用

JavaScript 的一个非常常见的用途是通过文档对象模型 API(如上所述)动态修改 HTML 和 CSS,以更新用户界面。

请注意,网页文档中的代码通常按照其在页面上出现的顺序加载和执行。如果 JavaScript 先于要修改的 HTML 和 CSS 加载和运行,则可能发生错误。

我这里引用一个康文昌给出的形象化比喻图

2d51f037ffb54b949c173a8a59910b0f_tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

3.浏览器中的 JavaScript 不能做什么?

1.网页中的 JavaScript 不能读、写、复制和执行硬盘上的任意文件。它没有直接访问操作系统的功能。仅当用户做出特定的行为,JavaScript 才能操作这个文件。例如,用户把文件“拖放”到浏览器中,或者通过<input>标签选择了文件。

2.同源策略

一个标签页通过 JavaScript 打开另外一个标签页。但即使在这种情况下,如果两个标签页打开的不是同一个网站 (域名、协议或者端口任一不相同的网站),它们都不能相互通信。

4.为什么JS被那么广泛的使用

● 与 HTML/CSS 完全集成。

●  简单的事,简单地完成。

●  被所有的主流浏览器支持,并且默认开启。

5.JS的书写位置

同css一样,js有三种书写位置( 大部分时候可以省略分号,但是最好不要省略分号,尤其对新手来说。 )

1. 行内式(例如以下)

<button onclick="createParagraph()">点我!</button>
<a href="javascript:alert('我是一个弹出层');">点击</a>
/*alert的作用是弹出网页信息提示窗口,每有一个alert就弹出一次*/

然而请不要这样做。这将使 JavaScript 污染了 HTML,而且效率低下。对于每个需要应用 JavaScript 的按钮,你都得手动添加 onclick="createParagraph()" 属性

2.内嵌式(可以放在head里,也可以放在body的末尾)

<script type="text/javascript">
  执行的代码语句
</script>

3.外链式(推荐,类似于css,外部脚本)

<script src="文件路径">
    内部的js实行代码将无效,所以这里不能写哦
</script>

Javascript的基础语法

变量

1.变量(其实let或者var都是一个声明或者说是个定义)

var变量

9c6864c34cfa4b72b773e4f79f5d9cf5_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png

let变量

let变量的赋值方法较多

1.
let message;
message = 'Hello'; // 保存字符串

2.(单一变量赋值推荐)
let message = 'Hello!'; // 定义变量,并且赋值
alert(message); // Hello!

3.
let user = 'John', age = 25, message = 'Hello';

4.
let user = 'John';
let age = 25;
let message = 'Hello';

5.(推荐)
let user = 'John',
age = 25,
message = 'Hello';

var变量和let变量的区别

var 关键字与 let 大体 相同,也用来声明变量,但稍微有些不同,也有点“老派”。 let 和 var 之间有些微妙的差别,但目前对于我们来说并不重要。我们将会在 旧时的 "var" 章节中介绍它们。

变量的形象比喻

00a7e0a96bfe4402a0c3e64fdb0a981c_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png

注意:一个变量应该只被声明一次。 对同一个变量进行重复声明会触发 error;

正确命名变量:

  • 谈到变量,还有一件非常重要的事。
  • 一个变量名应该有一个清晰、明显的含义,对其存储的数据进行描述。
  • 变量命名是编程过程中最重要且最复杂的技能之一。快速地浏览变量的命名就知道代码是一个初学 者还是有经验的开发者写的。
  • 在一个实际项目中,大多数的时间都被用来修改和扩展现有的代码库,而不是从头开始写一些完全 独立的代码。当一段时间后,我们做完其他事情,重新回到我们的代码,找到命名良好的信息要容 易得多。
  • 换句话说,变量要有个好名字。 声明变量之前,多花点时间思考它的更好的命名。你会受益良多。
  • 一些可以遵循的规则: 使用易读的命名,比如 userName 或者 shoppingCart 。
  • 离诸如 a 、 b 、 c 这种缩写和短名称远一点,除非你真的知道你在干什么。变量名在能够准确描述变量的同时要足够简洁。不好的例子就是 data 和 value ,这样的名称等于什么都没说。如果能够非常明显地从上下文知道数据和值所表达的含义,这样使用它们 也是可以的。
  • 脑海中的术语要和团队保持一致。如果网站的访客称为“用户”,则我们采用相关的变量命名,比 如 currentUser 或者 newUser ,而不要使用 currentVisitor 或者一个 newManInTown 。

总结:
我们可以使用 var 、let 或 const 声明变量来存储数据。 let — 现代的变量声明方式。 var — 老旧的变量声明方式。一般情况下,我们不会再使用它。但是,我们会在 旧时的 "var" 章节介绍 var 和 let 的微妙差别,以防你需要它们。 const — 类似于 let ,但是变量的值无法被修改。 变量应当以一种容易理解变量内部是什么的方式进行命名。

2.JS的命名规范

JavaScript 的变量命名有两个限制:

  1. 变量名称必须仅包含字母,数字,符号 $ 和 _ 。
  2. 首字符必须非数字。
  3. 推荐驼峰命名法(javascript会关注大小写)
  4. 不能是保留字或者关键字
  5. 不能出现空格

3.常量

定义:

使用 const 声明的变量称为“常量”。它们不能被修改,如果你尝试修改就会发现报错 ,声明一个常数(不变)变量,可以使用 const 而非 let

当程序员能确定这个变量永远不会改变的时候,就可以使用 const 来确保这种行为,并且清楚地 向别人传递这一事实。

数据类型

4.数据类型(在 JavaScript 中有 8 种基本的数据类型(译注:7 种原始类型和 1 种引用类型)。在这里,我们将对它们进行大体的介绍)

1. 1 Number类型

常规:number 类型代表整数和浮点数。数字可以有很多操作,比如,乘法 * 、除法 / 、加法 + 、减法 -,科学计数法(e或者E),十六,八,二进制 等等。

特殊数值:Infinity 、 -Infinity 和 NaN 。

  • Infinity 代表数学概念中的 无穷大 ∞。是一个比任何数字都大的特殊值。
例如
alert( 1 / 0 ); // Infinity
alert( Infinity ); // Infinity
  • NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果,NaN 是粘性的。任何对 NaN 的进一步操作都会返回 NaN
例如
alert( "not a number" / 2 ); // NaN,这样的除法是错误的
alert( "not a number" / 2 + 5 ); // NaN

1. 2 BigInt 类型

在 JavaScript 中,“number” 类型无法表示大于 (2 53-1) (即 9007199254740991 ),或小于 -(2 53-1) 的整数。这是其内部表示形式导致的技术限制。

但有时我们需要很大的数字,例如用于加密或微秒精度的时 间戳。 BigInt 类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。 可以通过将 n 附加到整数字段的末尾来创建 BigInt 值。

语法:

// 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 1234567890123456789012345678901234567890n;

1. 3 String(字符串) 类型

JavaScript 中的字符串必须被括在引号里。

在 JavaScript 中,有三种包含字符串的方式。

  1. 双引号: "Hello" . 

  2. 单引号: 'Hello' . 

  3. 反引号: Hello .

双引号和单引号都是“简单”引用,在 JavaScript 中两者几乎没有什么差别。 反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字 符串中。

例如
let name = "John";
// 嵌入一个变量
alert( `Hello, ${name}!` ); // Hello, John!
// 嵌入一个表达式
alert( `the result is ${1 + 2}` ); // the result is 3
//${…} 内的表达式会被计算,计算结果会成为字符串的一部分。可以在 ${…} 内放置任何东西:
诸如名为 name 的变量,或者诸如 1 + 2 的算数表达式,或者其他一些更复杂的。
需要注意的是,这仅仅在反引号内有效,其他引号不允许这种嵌入。//

1. 4 Boolean(布尔) 类型(逻辑类型)

boolean 类型仅包含两个值: true 和 false 。

可做存储比较(可用于账号登录验证)

也可作为比较的结果:

let isGreater = 4 > 1;
alert( isGreater ); // true(比较的结果是 "yes")

1. 5 “undefined” 值(声明,未附值)

未来可添加变量值(不知道什么什么类型)

特殊值 undefined 和 null 一样自成类型。

 undefined 的含义是 未被赋值 。

如果一个变量已被声明,但未被赋值,那么它的值就是 undefined :

1. 6 “null” 值

特殊的 null 值不属于上述任何一种类型。 它构成了一个独立的类型,只包含 null 值:

相比较于其他编程语言,JavaScript 中的 null 不是一个“对不存在的 object 的引用”或者 “null 指针”。 JavaScript 中的 null 仅仅是一个代表 “无”、“空”或“值未知” 的特殊值。

1. 7 object 类型和 symbol 类型

object 类型是一个特殊的类型。 其他所有的数据类型都被称为“原始类型”,因为它们的值只包含一个单独的内容(字符串、数字或 者其他)。相反, object 则用于储存数据集合和更复杂的实体。

5.判断数据类型

它支持两种语法形式: 1. 作为运算符: typeof x 。 2. 函数形式: typeof(x) 。 

例如
 var a="111"
 console.log( typeof  a)//方法一
 console.log( typeof(a))//方法二

数据类型总结:

JavaScript 中有八种基本的数据类型(译注:前七种为基本数据类型,也称为原始类型,而 object 为复杂数据类型)。

  •  number 用于任何类型的数字:整数或浮点数,在 ±(2 53-1) 范围内的整数。
  •  bigint 用于任意长度的整数。 
  • string 用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。 boolean 用于 true 和 false 。
  •  null 用于未知的值 —— 只有一个 null 值的独立类型。
  •  undefined 用于未定义的值 —— 只有一个 undefined 值的独立类型。
  •  symbol 用于唯一的标识符。
  •  object 用于更复杂的数据结构。 

6.数据类型转换:

1. 1 字符串转换

alert 会自动将任何值都转换为字符串以进行显示。

当我们需要一个字符串形式的值时,就会进行字符串转换。

什么东西和字符串在一起都将被转换成字符串的类型 

比如, alert(value) 将 value 转换为字符串类型,然后显示这个值。

注意:只要任意一个运算元是字符串,那么另一个运算元也将被转化为字符串。

 我们也可以显式地调用 String(value) 来将 value 转换为字符串类型:

例如
let value = true;
alert(typeof value); // boolean
value = String(value); // 现在,值是一个字符串形式的 "true"
alert(typeof value); // string

1. 2 数字型转换

  • 变量强制转换(即类似于谁和number类型的数一起参与计算等等的话,其他数据会被转换成number类型)
  • 可转换小数,会保留小数
  • 可转换布尔值
  • 遇到不可转换的都返回NaN
  • 字符串和underfined的结果为Nan,null的结果为0,false和true分别为0,1
  • 我们也可以使用 Number(value) 显式地将这个 value 转换为 number 类型。

1. 3 布尔型转换

转换规则如下: 

直观上为“空”的值(如 0 、空字符串、 null 、 undefined 和 NaN )将变为 false 。

 其他值变成 true 。 

在 JavaScript 中,非空的字符串总是 true 。 

例如
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false

1. 4 局部提取转换(其他转数值)

  • parseInt(整型提取)

从第一位开始检查,是数字就转换(整型)

开头就不是的话直接返回NaN

不认识小数点,只保留整数

例如
 var a="。。。"
 var b=parseInt(a)
 onsole.log(a,b)
  • parseFloat(浮点数)

同上,但认识一次小数点

代码基本同上,特例是1.25rem的时候有可能会用到

  • 加法
  1. 两边都需要为可运算的数字
  2. 任一不为,返NaN
  3. 加法不可用

运算符

7.运算符

1.数学运算符

- +

两边是数字才能进行加法运算,任一为字符串,就会进行字符串的连接

- -,*,%,/

自动将两边都转换成数字进行运算

2.三目运算符

基础语法: 条件 ? 条件为true执行的代码语句 : 条件为false时执行的代码语句

?(条件运算符)

多个 ‘?’的运用

let age = prompt('age?', 18);

let message = (age < 3) ? 'Hi, baby!' :
(age < 18) ? 'Hello!' :
(age < 100) ? 'Greetings!' :
'What an unusual age!';
alert( message );

//1. 第一个问号检查 age < 3 。
2. 如果为真 — 返回 'Hi, baby!' 。否则,会继续执行冒号 ":" 后的表达式,检查 age <
183. 如果为真 — 返回 'Hello!' 。否则,会继续执行下一个冒号 ":" 后的表达式,检查 age <
1004. 如果为真 — 返回 'Greetings!' 。否则,会继续执行最后一个冒号 ":" 后面的表达式,返
回 'What an unusual age!'

8.赋值运算符

=,+=,-=,*=

a+=1等于a=a+1

a*=1等于a=a*1  

赋值 = 返回一个值

链式赋值

let a, b, c;
a = b = c = 2 + 2;

原地修改

let n = 2;
n = n + 5;
n = n * 2;

9.比较运算符

检查两个值不相等。不相等在数学中的符号是 ,但在 JavaScript 中写成 a != b 。 

对于布尔类型值, true 会被转化为 1 、 false 转化为 0 。

10.逻辑运算符

1.&&(与,权重最大)

2.||(或)

3.!(非)

特殊用法:

7e84132c84db4206b7373b147ef5cf2c_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png

11.自增自减运算符(自左向右)详情见c语

96a0c8a3b4804e928e09baea1cea7e51_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png
区别请看代码比较
let counter = 1;
let a = ++counter; // (*)
alert(a); // 2

let counter = 1;
let a = counter++; // (*) 将 ++counter 改为 counter++
alert(a); // 1


●如果我们想要对变量进行自增操作,并且 需要立刻使用自增后的值,那么我们需要使用前置形
式;
●如果我们想要将一个数加一,但是我们想使用其自增之前的值,那么我们需要使用后置形式;

12.逗号运算符

定义: 逗号运算符能让我们处理多个语句,使用 , 将它们分开。每个语句都运行了,但是只有最后的语 句的结果会被返回。

例如
let a = (1 + 2, 3 + 4);
alert( a ); // 7(3 + 4 的结果)

注意:逗号运算符的优先级非常低 请注意逗号运算符的优先级非常低,比 = 还要低,因此上面你的例子中圆括号非常重要。 如果没有圆括号: a = 1 + 2, 3 + 4 会先执行 + ,将数值相加得到 a = 3, 7 ,然后赋 值运算符 = 执行, ‘a = 3’,然后逗号之后的数值 7 不会再执行,它被忽略掉了。相当于 (a = 1 + 2), 3 + 4 。

该方法可能会被用在javascript的框架上

13.运算符练习及巩固

"" + 1 + 0 = "10" // (1)
"" - 1 + 0 = -1 // (2)
true + false = 1
6 / "3" = 2
"2" * "3" = 6
4 + 5 + "px" = "9px"
"$" + 4 + 5 = "$45"
"4" - 2 = 2
"4px" - 2 = NaN
7 / 0 = Infinity
" -9 " + 5 = " -9 5" // (3)
" -9 " - 5 = -14 // (4)
null + 1 = 1 // (5)
undefined + 1 = NaN // (6)
" \t \n" - 2 = -2 // (7)

解析及相关知识点:

    1. 有字符串的加法 "" + 1 ,首先会将数字 1 转换为一个字符串: "" + 1 = "1" ,然后我们得到 "1" + 0 ,再次应用同样的规则得到最终的结果。
  •  2. 减法 - (像大多数数学运算一样)只能用于数字,它会使空字符串 "" 转换为 0 。
  •  3. 带字符串的加法会将数字 5 加到字符串之后。 
    1. 减法始终将字符串转换为数字,因此它会使 " -9 " 转换为数字 -9 (忽略了字符 串首尾的空格)。
  •  5. null 经过数字转换之后会变为 0 。 
    1. undefined 经过数字转换之后会变为 NaN 。
    1. 字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空 格字符组成,包括 \t 、 \n 以及它们之间的“常规”空格。因此,类似于空字符串,所以 会变为 0 。 

14.修正加法

这里有一段代码,要求用户输入两个数字并显示它们的总和。 它的运行结果不正确。下面例子中的输出是 12 (对于默认的 prompt 的值)。 为什么会这样?修正它。结果应该是 3 。

let a = prompt("First number?", 1);
let b = prompt("Second number?", 2);
alert(a + b); // 12

 

解析:原因是 prompt 以字符串的形式返回用户的输入。

  • 我们应该做的是,在 + 之前将字符串转换为数字。
  • 使用 Number() 或在 prompt 前加 + 
  • 或者利用去加法的方法进行number值的转换,代码见下
<script>     
 let a = prompt("First number?", 1);   
 let b = prompt("Second number?", 2);  
 alert(a*1 + b*1); // 12    
</script>

值的比较

15.字符串的比较

字符串是按字符(母)逐个进行比较的。

字符串比较细则:

    1. 首先比较两个字符串的首位字符大小。 
    1. 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。算法结束。 
    1. 否则,如果两个字符串的首位字符相等,则继续取出两个字符串各自的后一位字符进行比较。 
    1. 重复上述步骤进行比较,直到比较完成某字符串的所有字符为止。 
    1. 如果两个字符串的字符同时用完,那么则判定它们相等,否则未结束(还有未比较的字符)的 字符串更大。
例
字符串 Glow 与 Glee 的比较则需要更多步骤,因为需要逐个字符进行比较:
1. G 和 G 相等。
2. l 和 l 相等。
3. o 比 e 大,算法停止,第一个字符串大于第二个。
  • 6.当对不同类型的值进行比较时,JavaScript 会首先将其转化为数字(number)再判定大小。
 '0100a' < 65  // false  '0100a'转为数字为NaN,NaN与任何值比较都是false

16.严格相等问题

背景:

`alert( 0 == false ); // true`

普通的相等性检查 `==` 存在一个问题,它不能区分出 `0``false` ,也同样无法区分空字符串和 `false`。这是因为在比较不同类型的值时,处于相等判断符号 == 两侧的值会先被转化为数字

解决:===

对数据本身和数据类型两者同时进行比较

特例:

对 null 和 undefined 进行比较


```js
alert( null === undefined ); // false
alert( null == undefined ); // true

JavaScript 存在一个特殊的规则,会判定它们相等。它们俩就像“一对恋人”,仅仅等于对方而不等 于其他任何的值(只在非严格相等下成立)。

当使用数学式或其他比较方法 < > <= >= 时:

  • null/undefined 会被转化为数字;

  • null 被转化为 0 ;

  • undefined 被转化为 NaN ;

奇怪的结果:null vs 0
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true

原因:这是因为相等性检查 == 和普通比较符 > < >= <= 的代码逻辑是 相互独立的。进行值的比较时, null 会被转化为数字,因此它被转化为了 0

特立独行的 undefined

alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)

原因如下:

 (1) 和 (2) 都返回 false 是因为 undefined 在比较中被转换为了 NaN ,而 *NaN 是一 个特殊的数值型值,它与任何值进行比较都会返回 false 。*

 (3) 返回 false 是因为这是一个**相等性检查**,而 undefined 只与 null 相等,不会与其他值相等。  

17.比较总结

  • 比较运算符始终返回布尔值。 
  • 字符串的比较,会按照“词典”顺序逐字符地比较大小。 
  • 当对不同类型的值进行比较时,它们会先被转化为数字(不包括严格相等检查)再进行比较。
  •  在非严格相等 == 下, null 和 undefined 相等且各自不等于任何其他的值。
  • 在使用 > 或 < 进行比较时,需要注意变量可能为 null/undefined 的情况。比较好的方法 是单独检查变量是否等于 null/undefined 。

例题参考

  • 5 > 4 → true
  • "apple" > "pineapple" → false
  • "2" > "12" → true
  • undefined == null → true
  • undefined === null → false
  • null == "\n0\n" → false
  • null === +"\n0\n" → false

结果的原因:

-   1. 数字间比较大小,显然得 true。
-   2. 按词典顺序比较,得 false"a""p" 小。
-   3. 与第 2 题同理,首位字符 "2" 大于 "1" 。 
-   4. null 只与 undefined 互等。 
-   5. 严格相等模式下,类型不同得 false。 
-   6. 与第 4 题同理, null 只与 undefined 相等。
-   7. 不同类型严格不相等。

*分支结构*

18.if/else语句

语法:if(条件){要执行的代码}

if(...) 语句计算括号里的条件表达式,如果计算结果是 true ,就会执行对应的代码块。

356d8a41f7de44be9e4e563111a06812_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png

19.与(&&),或(||),非(!)专栏

例题一

alert( alert(1) && alert(2) );
答案: 1 ,然后 undefined 。

解析:在JavaScript中,alert()函数用于在浏览器中显示一个警告框,并返回undefined。当你连续调用多个alert()函数时,每个函数都会显示一个警告框,但是返回值只会是最后一个alert()函数的返回值。

在这段代码中,alert(1)会显示一个警告框,并返回undefined。然后,alert(2)也会显示一个警告框,并返回undefined。但是,由于逻辑与运算符(&&)的短路特性,只有在第一个表达式为真时才会执行第二个表达式。因为alert(1)返回的是undefined,它被视为假值,所以第二个alert(2)不会执行。

因此,你会看到一个警告框显示数字1,然后在控制台中会输出undefined

或(||)

??的运用

或运算符 || 可以以与 ?? 运算符相同的方式使用。

它们之间重要的区别是:

  •  || 返回第一个 真 值。
  •  ?? 返回第一个 已定义的 值。

换句话说,|| 无法区分 false 、 0 、空字符串 "" 和 null/undefined。它们都一样 —— 假值(falsy values)。如果其中任何一个是 || 的第一个参数,那么我们将得到第二个参数作为 结果。

区别如下:

let height = 0;
alert(height || 100); // 100
alert(height ?? 100); // 0

height || 100 首先会检查 height 是否为一个假值,发现它确实是。
所以,结果为第二个参数, 100 。
height ?? 100 首先会检查 height 是否为 null/undefined ,发现它不是。
所以,结果为 height 的原始值, 0

 ?? 运算符的优先级相当低,因此, ?? 在 = 和 ? 之前计算,但在 大多数其他运算符(例如, + 和 * )之后计算

在JavaScript的逻辑或运算符(||)中,以下值被视为假值(即被认为是false):

  1. 数字0
  2. 空字符串 '' 或 ""
  3. null
  4. undefined
  5. NaN

其他所有值都被视为真值(即被认为是true)。因此,在逻辑或运算中,数字2被视为真值,字符串被视为真值(无论字符串是什么内容),而null被视为假值。

实例:

登录验证

prompt:浏览器显示一个对话框,其中有一个可选的信息,提示用户输入一些文本,并等待用户提交文本或取消对话框。用户可以在对话框中填入一些信息。

20."switch" 语句

语法:

switch 语句有至少一个 case 代码块和一个可选的 default 代码块。

switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}

规则:

  • 比较 x 值与第一个 case (也就是 value1 )是否严格相等,然后比较第二个 case ( value2 )以此类推。
  •  如果相等, switch 语句就执行相应 case 下的代码块,直到遇到最靠近的 break 语句(或 者直到 switch 语句末尾,break必须加)。
  • 如果没有符合的 case,则执行 default 代码块(如果 default 存在)。

详情格式 用法1:

d312a5e90b9644e7b97547431cbc73cb_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png

用法2:

共享同一段代码的几个 case 分支可以被分为一组: 比如,如果我们想让 case 3 和 case 5 执行同样的代码:

let a = 3;
switch (a) {
case 4:
alert('Right!');
break;
case 3: // (*) 下面这两个 case 被分在一组
case 5:
alert('Wrong!');
alert("Why don't you take a math class?");
break;
default:
alert('The result is strange. Really.');
}    

可用于检测填入月份的天数

循环结构

21.“while” 循环

语法:while(条件){满足条件执行}

循环体的单次执行叫作 一次迭代。

22.for循环

语法:

for(var i=0i<10i++){要执行的代码}
b0a51473b8b74abea3b5b0c29164f10e_tplv-k3u1fbpfcp-jj-mark_3024_0_0_0_q75.png

23.do while循环

使用 do..while 语法可以将条件检查移至循环体下面:

24.跳出循环

break

如果用户输入空行或取消输入,在 (*) 行的 break 指令会被激活。它立刻终止循环,将控制权 传递给循环后的第一行

continue

continue 指令是 break 的“轻量版”。它不会停掉整个循环。而是停止当前这一次迭代,并强 制启动新一轮循环(如果条件允许的话)。 如果我们完成了当前的迭代,并且希望继续执行下一次迭代,我们就可以使用它。


例如
for (let i = 0; i < 10; i++) {
//如果为真,跳过循环体的剩余部分。
if (i % 2 == 0) continue;
alert(i); // 1,然后 3,5,7,9
}

禁止 break/continue 在 ‘?’ 的右边

25.循环结构总结:

  • while —— 每次迭代之前都要检查条件。
  • do..while —— 每次迭代后都要检查条件。 
  • for (;;) —— 每次迭代之前都要检查条件,可以使用其他设置。

函数

26.函数基本构成及定义

函数声明

定义:使用 函数声明 创建函数。

function showMessage() {
alert( 'Hello everyone!' );
}

function 关键字首先出现,然后是 函数名,然后是括号之间的 参数 列表(用逗号分隔,在上 述示例中为空),最后是花括号之间的代码(即“函数体”)。

Reference(本文引用吸收了部分以下的资料)

JS官方电子书

我本人的前锋教育Javascript学习笔记

欢迎大家点赞收藏和交流!!!

O(∩_∩)O谢谢!