JS 基础介绍
1.什么是javascript?
定义:JavaScript 是一种脚本编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新——交互式的地图、2D/3D 动画、滚动播放的视频等等——JavaScript 就在其中。它是标准 Web 技术蛋糕的第三层,其中 HTML 和 CSS 我们已经在学习区的其他部分进行了详细的讲解。
- HTML 是一种标记语言,用来结构化我们的网页内容并赋予内容含义,例如定义段落、标题和数据表,或在页面中嵌入图片和视频。
- CSS 是一种样式规则语言,可将样式应用于 HTML 内容,例如设置背景颜色和字体,在多个列中布局内容。
- JavaScript 是一种脚本语言,可以用来创建动态更新的内容,控制多媒体,制作图像动画,还有很多。(好吧,虽然它不是万能的,但可以通过简短的代码来实现神奇的功能。)
详情解读请参考ACM专业解释
2.javascript在网页上的作用
JavaScript 的一个非常常见的用途是通过文档对象模型 API(如上所述)动态修改 HTML 和 CSS,以更新用户界面。
请注意,网页文档中的代码通常按照其在页面上出现的顺序加载和执行。如果 JavaScript 先于要修改的 HTML 和 CSS 加载和运行,则可能发生错误。
我这里引用一个康文昌给出的形象化比喻图
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变量
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" 章节中介绍它们。
变量的形象比喻
注意:一个变量应该只被声明一次。 对同一个变量进行重复声明会触发 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 的变量命名有两个限制:
- 变量名称必须仅包含字母,数字,符号 $ 和 _ 。
- 首字符必须非数字。
- 推荐驼峰命名法(javascript会关注大小写)
- 不能是保留字或者关键字
- 不能出现空格
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 中,有三种包含字符串的方式。
-
双引号: "Hello" .
-
单引号: 'Hello' .
-
反引号:
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的时候有可能会用到
- 去加法
- 两边都需要为可运算的数字
- 任一不为,返NaN
- 加法不可用
运算符
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 <
18 。
3. 如果为真 — 返回 'Hello!' 。否则,会继续执行下一个冒号 ":" 后的表达式,检查 age <
100 。
4. 如果为真 — 返回 '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.!(非)
特殊用法:
11.自增自减运算符(自左向右)详情见c语
区别请看代码比较
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" + 0 ,再次应用同样的规则得到最终的结果。
- 2. 减法 - (像大多数数学运算一样)只能用于数字,它会使空字符串 "" 转换为 0 。
- 3. 带字符串的加法会将数字 5 加到字符串之后。
-
- 减法始终将字符串转换为数字,因此它会使 " -9 " 转换为数字 -9 (忽略了字符 串首尾的空格)。
- 5. null 经过数字转换之后会变为 0 。
-
- undefined 经过数字转换之后会变为 NaN 。
-
- 字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空 格字符组成,包括 \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.字符串的比较
字符串是按字符(母)逐个进行比较的。
字符串比较细则:
-
- 首先比较两个字符串的首位字符大小。
-
- 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。算法结束。
-
- 否则,如果两个字符串的首位字符相等,则继续取出两个字符串各自的后一位字符进行比较。
-
- 重复上述步骤进行比较,直到比较完成某字符串的所有字符为止。
-
- 如果两个字符串的字符同时用完,那么则判定它们相等,否则未结束(还有未比较的字符)的 字符串更大。
例
字符串 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 ,就会执行对应的代码块。
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
):
- 数字0
- 空字符串
''
或""
null
undefined
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:
用法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=0;i<10;i++){要执行的代码}
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(本文引用吸收了部分以下的资料)
我本人的前锋教育Javascript学习笔记
欢迎大家点赞收藏和交流!!!
O(∩_∩)O谢谢!