P2M1:JavaScript 基础语法

246 阅读5分钟

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/0NaN 与任何值都不相等,包括他本身。
函数 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数字、非空字符串

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 均为 truenull == 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.