JavaScript学习笔记
JavaScript学习笔记
LinstarsJavaScript学习笔记
浏览器执行JS步骤
- 渲染引擎:用来解析HTML和CSS,俗称内核,比如chrome的浏览器的bink,老版本的webkt
- JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行,比如chrome的V8
JS的组成
- JavaScript语法
- DOM:页面文档对象模型
- BOM:浏览器对象模型
JS的书写位置
直接书写在元素的内部
1 |
|
内嵌方法写在头部,
1 |
|
需要先新建一个.js文件,文件内容为
直接写这一句就可以了
1 | alter('这是一个弹窗') |
然后在html文件中直接引用
1 |
|
顺带一提,JavaScript中代码行尾不需要加;
分号,除非一行要写多个语句需要加分号,例如
语句1;语句2
|||||||||||||||||||||||||||||||||||||||||||||||||||||||最后一句不需要加分号的
注释
在JavaScript语法中,注释还是以html的注释方法一样的
单行注释
1 | //注释内容 |
多行注释
1 | /* |
输入输出
1 | <head> |
输出结果:
1 | <head> |
弹出框的结果
1 | <head> |
数据类型
javascript的数据类型是动态的,同时也意味着相同的变量可以用作不同的类型
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带
typeof可以用来判断数据类型
1 | var x=6; //为数字型,这是官方叫法 |
极大或极小的数字可以通过科学(指数)计数法来书写:
1 | var y=123e5; // 12300000 |
isNaN可以用来判断非数字,并且返回一个值,注意 一定要区分大小写!!
1 | conosle.log(isNaN(15)); |
返回值false
字符串
定义变量,字符串需要用单引号或双引号包裹着
1 | var a = '我是字符串' |
length
length可以用来检测字符串的长度
1 | var str ='我是\n字符串' |
字符串转义符
类似html里面的特殊字符,转义符都是以\开头的,
常用的转义符
转义符 | 解释说明 |
---|---|
\n |
换行符,n是newline的意思 |
\\ |
斜杠\ |
\' |
‘ 单引号 |
\" |
“ 双引号 |
\t |
tab 缩进 |
\b |
空格,b是blank的意思 |
字符串的拼接
1 | console.log('这里是字符串1'+'字符串2') |
1输出结果:这里是字符串1字符串2
2输出结果:1+1=2
Boolean
布尔型boolean是可以参与计算的,即true为1,false为0,这样在后期进行判断的时候就会很方便
例如:
1 | var bool1=true |
输出结果
1输出结果:2
2输出结果:1
undefined
一个未定义的变量未赋值,就是undefined未定义数据类型
如果手动给一个变量值为undefined,那么他也是未定义的数据类型
例如
1 | var a = undefined |
输出也是undefined
扩展:
1 | console.log(a+'pink') //输出结果是字符串拼接undpinkdefine |
null
空值null
1 | var c=null |
数据类型的转换
转为字符串型
方式 | 说明 | 案例 |
---|---|---|
toString() | 转为字符串 | var num=1;alert(num.toString()) |
String()强制转换 | 转为字符串 | var num=1;alert(String(num)) |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num=1;alert(num+”我是字符串”) |
1 | //转为字符串型 toString |
点击查看控制台输出结果
转换为数字型
方式 | 说明 | 案例 |
---|---|---|
parselnt(string)函数 | 讲string类型转成整数数值型 | parselnt(‘78’) |
parseFloat(string)函数 | 讲string类型转成浮点数数值型 | parseFloat(‘78.21’) |
Number()强制转换函数 | 讲string类型转换为数值型 | Number(‘78.21’) |
js隐式转换(- * /) | 利用算数运算隐式转换为数值型 | ‘12’-0 |
代码
1 | //数字类型的转换,将字符型转换为数字型 |
转换为布尔型
方式 | 说明 | 案例 |
---|---|---|
Boolean()函数 | 其他类型转成布尔值 | Boolean(‘true’) |
- 代表空、否定的值会被转换为false,如”、0、NaN、null、nudefined
- 其余值都会被转换为true
如:
1 | console.log(Boolean('')); //false |
运算符与表达式
运算符的优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ -- ! |
3 | 算术运算符 | 先* / % 后+ - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先&& 后 ` |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
if语句
if 的语法结构
1 | if (条件表达式) { |
执行思路 如果 if 里面的条件表达式结果为真 true 则执行大括号里面的 执行语句
1 | // 如果if 条件表达式结果为假 则不执行大括号里面的语句 则执行if 语句后面的代码 |
if双分支语句
1 | // 语法结构 if 如果 else 否则 |
执行思路 如果表达式结果为真 那么执行语句1 否则 执行语句2
1 | var age = prompt('请输入您的年龄:'); |
多分支语句
就是利用多个条件来选择不同的语句执行 得到不同的结果 多选1 的过程
if else if语句是多分支语句
1 | if (条件表达式1) { |
执行思路
如果条件表达式1 满足就执行 语句1 执行完毕后,退出整个if 分支语句
如果条件表达式1 不满足,则判断条件表达式2 满足的话,执行语句2 以此类推
如果上面的所有条件表达式都不成立,则执行else 里面的语句
注意
- 多分支语句还是多选1 最后只能有一个语句执行
- else if 里面的条件理论上是可以任意多个的
- else if 中间有个空格了
判断成绩案例
// 伪代码 按照从大到小判断的思路
// 弹出prompt输入框,让用户输入分数(score),把这个值取过来保存到变量中
// 使用多分支 if else if 语句来分别判断输出不同的值
var score = prompt('请您输入分数:');
if (score >= 90) {
alert('宝贝,你是我的骄傲');
} else if (score >= 80) {
alert('宝贝,你已经很出色了');
} else if (score >= 70) {
alert('你要继续加油喽');
} else if (score >= 60) {
alert('孩子,你很危险');
} else {
alert('熊孩子,我不想和你说话,我只想用鞭子和你说话');
}
例题判断闰年
算法:
- 能被4整除且不能整除100的为闰年(如2004年就是闰年,1901年不是闰年)或者能够被 400 整除的就是闰年
- 弹出prompt 输入框,让用户输入年份,把这个值取过来保存到变量中
- 使用 if 语句来判断是否是闰年,如果是闰年,就执行 if 大括号里面的输出语句,否则就执行 else里面的输出语句
- 一定要注意里面的且 && 还有或者 || 的写法,同时注意判断整除的方法是取余为 0
1 | var year = prompt('请您输入年份:'); |
三元表达式
有三元运算符组成的式子我们称为三元表达式
++num 3 + 5 ? :
语法结构
条件表达式 ? 表达式1 : 表达式2
执行思路
如果条件表达式结果为真 则 返回 表达式1 的值 如果条件表达式结果为假 则返回 表达式2 的值
1 | var num = 10; |
案例数字补零
// 用户输入0~59之间的一个数字
// 如果数字小于10,则在这个数字前面补0,(加0 拼接) 否则 不做操作
// 用一个变量接受这个返回值,输出
var time = prompt('请您输入一个 0 ~ 59 之间的一个数字');
// 三元表达式 表达式 ? 表达式1 :表达式2
var result = time < 10 ? '0' + time : time; // 把返回值赋值给一个变量
alert(result);
swich语句
switch 语句也是多分支语句 也可以实现多选1
语法结构
switch 转换、开关 case 小例子或者选项的意思
1 | switch (表达式) { |
执行思路
利用我们的表达式的值 和 case 后面的选项值相匹配 如果匹配上,就执行该case 里面的语句 如果都没有匹配上,那么执行 default里面的语句
代码验证
1 | switch (8) { |
switch注意事项
- 我们开发里面 表达式我们经常写成变量
- 我们num 的值 和 case 里面的值相匹配的时候是 全等 必须是值和数据类型一致才可以 num === 1
- break 如果当前的case里面没有break 则不会退出switch 是继续执行下一个case
1 | var num = 1; |
查询水果案例
// 弹出 prompt 输入框,让用户输入水果名称,把这个值取过来保存到变量中。
// 将这个变量作为 switch 括号里面的表达式。
// case 后面的值写几个不同的水果名称,注意一定要加引号 ,因为必须是全等匹配。
// 弹出不同价格即可。同样注意每个 case 之后加上 break ,以便退出 switch 语句。
// 将 default 设置为没有此水果。
var fruit = prompt('请您输入查询的水果:');
switch (fruit) {
case '苹果':
alert('苹果的价格是 3.5/斤');
break;
case '榴莲':
alert('榴莲的价格是 35/斤');
break;
default:
alert('没有此水果');
}
循环
for循环
for 重复执行某些代码, 通常跟计数有关系
for 语法结构
1
2
3for (初始化变量; 条件表达式; 操作表达式) {
// 循环体
}
初始化变量 就是用var 声明的一个普通变量, 通常用于作为计数器使用
条件表达式 就是用来决定每一次循环是否继续执行 就是终止的条件
操作表达式 是每次循环最后执行的代码 经常用于我们计数器变量进行更新(递增或者递减)
代码体验
我们重复打印100遍 你好
1 | for (var i = 1; i <= 100; i++) { |
while循环
while 循环语法结构
while 当…的时候
1 | while (条件表达式) { |
执行思路
当条件表达式结果为true 则执行循环体 否则 退出循环
代码验证
1 | var num = 1; |
里面应该也有计数器 初始化变量,应该也有操作表达式 完成计数器的更新 防止死循环
do while循环
do while 循环 语法结构
1 | do { |
执行思路 跟while不同的地方在于 do while 先执行一次循环体 在判断条件 如果条件表达式结果为真,则继续执行循环体,否则退出循环,do while 循环体至少执行一次
代码验证
var i = 1;
do {
console.log('how are you?');
i++;
} while (i <= 100)
do while循环案例
1 | // 1. 打印人的一生,从1岁到100岁 |
continue
continue 关键字 退出本次(当前次的循环) 继续执行剩余次数循环
1 | for (var i = 1; i <= 5; i++) { |
求1~100 之间, 除了能被7整除之外的整数和
1 | var sum = 0; |
break
// break 退出整个循环
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
console.log('我正在吃第' + i + '个包子');
}
数组
数组(Array) :就是一组数据的集合 存储在单个变量下的优雅方式
利用new 创建数组
1 | var arr = new Array(); // 创建了一个空的数组 |
利用数组字面量创建数组 []
1 | var arr = []; // 创建了一个空的数组 |
- 我们数组里面的数据一定用逗号分隔
- 数组里面的数据 比如1,2, 我们称为数组元素
- 获取数组元素 格式 数组名[索引号] 索引号从 0开始
遍历数组
遍历数组:就是把数组的元素从头到尾访问一次
var arr = ['red', 'green', 'blue'];
for (var i = 0; i < 3; i++) {
console.log(arr[i]);
}
因为我们的数组索引号从0开始 ,所以 i
必须从 0开始 i < 3
输出的时候 arr[i] i
计数器当索引号来用
数组长度
数组长度 数组名.length
数组的长度是元素个数 不要跟索引号混淆arr.length
动态监测数组元素的个数
1 | var arr = ['关羽', '张飞', '马超', '赵云', '黄忠', '刘备', '姜维', 'pink']; |
计算数组的和以及平均值
需求:求数组 [2,6,1,7, 4] 里面所有元素的和以及平均值。
- 声明一个求和变量 sum。
- 遍历这个数组,把里面每个数组元素加到 sum 里面。
- 用求和变量 sum 除以数组的长度就可以得到数组的平均值。
1 | var arr = [2, 6, 1, 7, 4]; |
求数组最大值
求数组[2,6,1,77,52,25,7]中的最大值
- 声明一个保存最大元素的变量 max。
- 默认最大值可以取数组中的第一个元素。
- 遍历这个数组,把里面每个数组元素和 max 相比较。
- 如果这个数组元素大于max 就把这个数组元素存到 max 里面,否则继续下一轮比较。
- 最后输出这个 max
1 | var arr = [2, 6, 1, 77, 52, 25, 7, 99]; |
数组转化为字符串
需求:将数组 [‘red’, ‘green’, ‘blue’, ‘pink’] 转换为字符串,并且用 | 或其他符号分割
- 需要一个新变量用于存放转换完的字符串 str。
- 遍历原来的数组,分别把里面数据取出来,加到字符串里面。
- 同时在后面多加一个分隔符
1 | var arr = ['red', 'green', 'blue', 'pink']; |
新增数组元素
新增数组元素 修改length长度
1 | // 1. 新增数组元素 修改length长度 |
数组存放十个值
新建一个数组,里面存放10个整数( 1~10)
核心原理:使用循环来追加数组。
- 声明一个空数组 arr。
- 循环中的计数器 i 可以作为数组元素存入。
- 由于数组的索引号是从0开始的, 因此计数器从 0 开始更合适,存入的数组元素要+1。
1 | var arr = []; |
筛选数组
将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大于等于 10 的元素选出来,放入新数组。
- 声明一个新的数组用于存放新数据newArr。
- 遍历原来的旧数组, 找出大于等于 10 的元素。
- 依次追加给新数组 newArr。
1 | var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]; |
1 | var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]; |