P2M1:JavaScript 基础语法
P2M1T1:JavaScript语法
1. 网页、网站、应用程序
2. 前端三层和JavaScript应用场景
3. JS的发展过程
4. JS的组成
ECMAScript + DOM + BOM
5. 计算机的组成
6. JS的书写位置
行内:作为属性值
标签内:<script>元素内
外联:.js文件,通过<script>的src属性引入
(引用文件的<script>内不能添加JS代码)
7. 注释
块级注释 /* */
单行注释 //
8. alert语句
alert();
函数=功能=方法
跟小括号
字符串内容必须以 "" 或 '' 包裹
以 ; 结尾
对空格、换行、缩进不敏感
9. prompt语句
prompt('提示内容','默认输入内容')
默认输入内容可省略,仅保留第一个参数传入
P2M1T2:数据类型
1. 字面量
也称“常量”,所见即所得,有数值、字符串、布尔
2. 数字字面量
直接书写
十进制
八进制:前缀 0o
十六进制:前缀 0x
参与运算时,都会转换为十进制
3. 浮点数字面量
不区分进制
科学计数法:1.2e4
精度问题:17位小数,可能出现不等情况,注意避免
4. 特殊的数字
正无穷 Infinity
负无穷 -Infinity
number.MIN-VALUE number.MAX_VALUE
-Infinity 5e-324 可表示 1.7976931348623157e+308 Infinity
NaN: not a number 表示此非正常数,但其属于Number类型,例如0/0。
NaN 与任何值都不相等,包括他本身。
函数 isNaN(): 用于判断一个数据是不是一个NaN,返回true/false
5. 字符串字面量
6. 以引号包裹
' ' 空白字符串
'' 空字符串
转义符反斜杠\
换行:\n
制表位:\t
单引号:\'
双引号:\"
反斜杠:\\
7. 变量
声明=定义=创建:var
命名:不能以数字开头;由字母、数字、下划线、$ 符号组成;字母区分大小写;不能是关键字和保留字。
使用驼峰命名法!
8. 变量赋值
变量定义后,其默认值为 undefined
变量参与赋值过程时,等号左变右不变
9. 数据类型
Number数字(不区分整型、浮点型)
String字符串
undefined未定义
Boolean布尔类型
null空对象指针(预备用来保存对象的变量,将其初始化为null类型)
Object对象
10. 检测数据类型
函数typeof()
console.log(typeof(null));函数输入可以是值或表达式
关键字typeof
console.log(typeof null);只能跟一个检测对象
11. 变量的数据类型
动态类型,随其存储数据变化
12. 数据类型转换
转为字符串
- 数据
toString() - 数字、undefined、null到字符串:
String() - 利用
+运算符
参与+运算的两个值只要有一个为字符串,结果就会为字符串,+起连字符作用。 因此,+''空字符串,可转为字符串
转为数值
-
Number()- 纯数字字符串 → 数字(其他进制会转为十进制)
- 空字符串、空白字符串 → 0
- 非空非纯数字字符串 → NaN
- 布尔 → 0/1
- undefined → NaN
- null → 0
- Symbol → 抛出错误
-
parseInt()转为整数- 浮点→取整
- 数字开头字符串→取整数字
- 非数字开头字符串(包括空字符串)→NaN
-
parseFloat()转为浮点数应用: prompt() 返回的数据是字符串类型
常用的写法:取得用户输入字符串并随即转换为数字类型var a = parseInt(prompt("Please input a number:"));
转为布尔
- Boolean() 适用于任何数据类型
- 转为 false :NaN、0(+0、-0)、
''空字符串、null、undefined - 转为 true :非0 非NaN数字、非空字符串
- 转为 false :NaN、0(+0、-0)、
P2M1T3:操作符
1. 算数运算符
+ - * / %
• 特别情况:NaN、Infinity
NaN参与运算的结果总是NaN
Infinity和一个常见数进行加减乘除,结果仍为Infinity
Infinity对一个常见数取余,NaN
一个常见数对Infinity取余,得常见数自身
Infinity相加或相乘,得Infinity
Infinity相减、相除、取余,得NaN
2.
• 特别情况2:多种数据类型参与
○ 字符串参与的 + 运算:起连字符作用,结果为字符串
○ 其他数据类型:非数字运算数发生隐式转换,规则同Number()
3. 比较运算符
返回结果为布尔类型,true/false
>
>=
<
<=
== 相等
!== 不相等
=== 全等
!=== 不全等
• 特别情况:NaN、Infinity
NaN与任何值的比较均为false,只有不等和不全等结果为true
Infinity与自身大于小于均为false,相等、全等为true
即Infinity==Infinity,Infinity===Infinity
4.
• 特别情况2:多种数据类型参与
(排除字符串与字符串相比较)
其他数据类型会被隐式转换为数字类型
null特殊:
○ 与非零比较时,当作 0 比较
○ 与 0 比较时,null !== 0
但,null >= 0, null <= 0 均为 true
○ null == undefined
• 特别情况3:字符串之间的比较
不关注字符串长度,逐个依次比较
从小到大:0-9,A-Z,a-z
5. 逻辑运算符
&& 与
|| 或
! 非
布尔值参与逻辑运算,结果也为布尔值
其他数据类型的值参与运算,会隐式转换为布尔值
○ 转为false:NaN、0、 “”空字符串、null、undefined
○ 转为true:非0 非NaN数字、非空字符串
注意:
○ a && b:如果a能被转换为false,那么返回a;否则,返回b。
○ a || b:如果a能被转换为true,那么返回a;否则,返回b。
另外,非运算的结果只能是布尔值,即true/false
运算顺序:
同符从前往后
非、与、或
6. 赋值运算符
7. 一元运算符
++、--
前缀一元运算符:++a、--a,先递增/递减,后参与运算
后缀一元运算符:a++、a--,先参与运算,后递增/递减
8. 运算优先级
a. 括号:()
b. 一元:++ 、-- 、!
c. 算数:
i. * 、 / 、 %
ii. + 、 -
d. 比较:
i. 关系:> 、 >= 、 < 、 <=
ii. 相等:== 、 !== 、 === 、 !===
e. 逻辑:
i. &&
ii. ||
f. 赋值:=
P2M1T4:流程控制语句
1.
2. if语句
if (condition expression) {
statement1;
} else {
statement2;
}
3. 注意事项
4. 多分支if语句
单一通道
5. if语句嵌套
结构体内可以包含任何语句,也就包括嵌套if语句
6. 三元运算符
boolean_expression?true_value:false_value;
常用于依条件对一个变量进行二选一的赋值。
7. switch语句
switch () {
case value1:
语句;
break;
case value2:
语句;
break;
default:
语句;
break;
}
条件值value和待判断值需要全等于匹配
default为没有符合case的情况,应放在所有case后面,作为最后的情形,也可省略不写
break会使程序跳出整个switch语句
8. 注意事项
9. for循环
前测试循环
for(初始化; 条件; 结束执行语句改变变量) {
循环体语句;
}
10. 注意事项
11. 注意事项
12. do while 循环
后测试循环,先执行一次后判断。
注意,变量的初始化不要写在do的循环体内,否则会引发死循环
13. while 循环
前测试循环
14. break语句
跳出循环
默认跳出所在层的循环,
要想跳出更外层的循环,需要为要跳出的循环添加label,并在break指明。
15. continue语句
结束本次循环,进入下次循环。
同样的,要想控制非本层循环的跳过,需要加label
16. 穷举思想
17. 累加器、累乘器
累加器初始值为0;
累乘器初始值为1.