高级程序设计 第三章 自我总结

本文详细介绍了JavaScript的语法,包括区分大小写、标识符、注释和严格模式。强调了变量的作用域,如var(函数作用域)、let(块作用域)和const的特性。讨论了数据类型,如Undefined、Null、Boolean、Number、String、Symbol以及Object,还涵盖了各种操作符和语句,包括函数的使用。
摘要由CSDN通过智能技术生成

高级程序设计 第三章 自我总结

3.1 语法

3.1.1区分大小写

3.1.2标识符

  • 数字、字母、下划线、$ 组成
  • 数字不能开头

3.1.3、注释

  • 单行注释 // xxx
  • 多行注释 /* xxx */

3.1.4、严格模式

“use strict”;

3.1.5、语句

  • 分号结尾,推荐
  • 无结尾,不推荐

3.2 关键字和保留字

  • 关键字:现在已经使用,不能用作标识符或者属性名
  • 保留字:未来使用,不能用作标识符或者属性名

3.3 变量

3.3.1 var(函数作用域)

  • 声明作用域
  • 使用var在一个函数内部定义一个变量,意味着该函数将在函数退出时被销毁
  • 在函数内部定义变量,省略var,可以创建一个全局变量
  • 声明提升
  • 把所有的变量声明都拉到函数作用域的顶部

3.3.2let(块作用域)

  • 暂时性死区
  • 不会在作用域中被提升
  • 在let声明前的执行瞬间被称为“暂时性死区”
  • 全局声明
  • 使用let在全局作用域中声明的变量不会成为window对象的属性
  • 页面不能重复声明同一个变量
  • 条件声明
  • 不能依赖条件声明模式
  • for循环中的let变量
  • 解决了for循环定义的迭代变量会渗透到循环体外部

3.3.3 const

  • const声明变量时必须同时声明初始化变量
  • const声明的限制只适用于它指向的变量的引用
  • 声明风格和最佳实践
  • 不使用var
  • const优先,let次之

3.4数据类型

1、 typeof操作符
a) undefined:未定义
b) boolean:布尔值
c) string:字符串
d) number:数值
e) object:对象(而不是函数)或null
i. 特殊值null被认为是一个对空对象的引用
f) function:函数
g) symbol:符号
2、 Undefined类型
a) 使用var或者let声明了变量但未初始化时,相当于给变量赋值了undefined值
b) 当typeof返回undefined时,你就会知道给定的变量是尚未定义,而不是声明了但初始化。
3、 Null类型
a) Null只有一个值,即特殊值null
b) 从逻辑上讲,null表示一个空对象指针
4、 Boolean类型
a) 有两个字面量,true和false
b) 转化为false的值有0、NAN、false,’’,undefined、null
5、 Number类型
a) 浮点数存在舍入错误是因为使用了IEEE754数值
b) 值的范围
i. –Infinity、Infinity
ii. 要确定一个数是不是有限大,可以使用IsFinite()
iii. NaN

  1. 在ECMAScript中,0,+0或-0相除会返回NaN
  2. 如果分子是非0值,分母是有符号0或无符号0,则会返回Infinity或-Infinity
  3. 任何涉及NaN的操作始终返回NaN
  4. NaN不等于包括NaN在内的任何值
  5. isNaN()可以判断这个参数是否“不是数值”

iv. 数值转换

  1. Number()是转型函数,可以用于任何数据类型
    a) 布尔值:true转换为1,false转换为0
    b) 数值:直接返回
    c) null:返回0
    d) undefined:返回NaN
    e) 字符串
    i. 数值字符:十进制数值
    ii. 浮点数格式字符:浮点数
    iii. 十六进制:十进制数值
    iv. 空字符串,返回0
    v. 其他:NaN
    f) 对象:调用valueOf方法,并按照上述规则转换成值。如果转换结果是NaN,则调用toString()方法,再按照字符串的规则转换
  2. parseInt()和paeseFloat()主要用于将字符串转换成数值
    a) parseFloat()只对第一次出现的小数点有效

6、 String类型
a) 字符字面量

i. \n:换行

b) 字符串的特点

i. ECMAScript中的字符串是不可变的

c) 转换成字符串

i. xxx.toString():除null和undefined值没有该方法
ii. String(xxx)

  1. 如果值有toString()方法,则调用该方法(不穿参数)并返回结果
  2. 如果是null,返回’null’
  3. 如果是undefined,返回’undefined’
    iii. 用加号操作符给一个值加上一个空字符串’’

d) 模版字面量

``

e) 字符串插值

${a}+${b}=${a+b}

f) 模版字面量标签函数

支持定义标签函数

g) 原始字面量

i. 可以使用默认的String.raw标签函数
ii. console.log(String.raw\u00A9); // \u00A9

7、 Symbol类型

a) ES6新增
b) 符号是原始值,且符号实例是唯一的、不可变的。
c) 符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险

a)、符号基本用法

注意:Symbol()不能与new关键词一起做微构造函数使用
这样做是为了避免创建符号包装对象
真的确实想使用符号包装对象,可以借用Object()函数

b)、使用全局符号注册表
Symbol.for(‘foo’)
如没有,则创建新符号实例;如果有,则重用已有符号。
Symbol.keyFor()
会查询全局注册表。如果有,防御对应字符串键;如果没有,返回undefined。

c)、使用符号作为属性
Object.defineProperty()/Object.defineProperties
Object.getOwnPropertyNames()返回对象实例的常规属性数组
Object.getOwnPropertySymbols()返回对象实例的符号属性数组
上面两个方法的返回值彼此互斥
Object.getOwnPropertyDescriptors()会返回同时包含常规和符号属性描述符的对象
Object.ownKeys()会返回两种类型的键

d)、常用内置符号
f)、Symbol.asyncIterator
g)、Symbol.hasInstance
… …

8、 Object类型

每个实例都有如下属性和方法
1、constructor 用于创建当前对象的函数
2、hasOwnProperty(propertyName) 用于判断当前对象实例上是否存在给定的属性
3、isPrototypeOf(propertyName) 用于判断当前对象是否为另一个对象的原型
4、propertyIsEnumerable(propertyName)用于判断给定的属性是否可以使用
5、toLocaleString()返回对象的字符串表示,该字符串反映对象所在的本地化执行环境
6、toString()返回对象的字符串表示

7、valueOf()返回对象对应的字符串、数值、布尔值表示。通常与toString()的返回值相同。
对象的toString()和valueOf()输出对比:
对象的toString()和valueOf()输出对比
各个类型的toString()结果:
在这里插入图片描述
各个类型的valueOf()结果:
各个类型的valueOf()结果

3.5 操作符

3.5.1 一元操作符

1、递增/递减操作符
符号在前,先加;符号在后,后加
2、一元加和减
会执行与使用Number()转型函数一样的类型转换
负号主要用于把数值变成负值

3.5.2 位操作符

有符号整数使用32位的前31位表示整数值。第32位表示数值的符号,如0表示正,1表示负。这一位称为符号位,它的值决定了数值其余部分的格式。
按位非:返回补数,即取反,并减1。(补数:010-》101)
按位与:都是1返回1,有任何一位是0返回0
按位或:至少一位是1时返回1,两位都是0时返回0
按位异或:一位上是1时返回1(两位都是1或0返回0)
左移(<<):所有数值的32位向左移,同时保留符号
右移(>>):所有数值的32位向右移,同时保留符号()正或负
无符号右移(>>>):所有32位向右移。对正数,与有符号右移结果相同;对负数,差异很大

3.5.3 布尔操作符

1、逻辑非
例:!a
空对象、0、null、NAN、undefined 返回true
2、逻辑与
例:a && b
a为true,返回b;a为false,返回false
3、逻辑或
例:a || b
a为true,返回a;a为false,返回b

3.5.4 乘性操作符

1、乘法操作符*
2、除法操作符/
3、取模(余数)操作符%

3.5.5 指数操作符

es7新增了操作符**
相当于Math.pow()
console.log(3**2); // 9

es7新增了赋值操作符**=
let a = 3;
a**=2; // 9

3.5.6 加性操作符

1、加法操作符
数学加法运算
如果有一个操作数为字符串,则两个操作符拼接到一起。如果另一个操作符不是字符串,则调用它们的toString()方法以获取字符串
2、减法操作符
数学减法运算

3.5.7 关系操作符

console.log(3>4); // false

3.5.8 相等操作符

等于:==
不等于:!=
全等:===
不全等:!==

3.5.9 条件操作符

三目运算
a ? b : c
a为true,返回b
a为false,返回c

3.5.10 赋值操作符

=
*=
/=
%=
+=
-=
<<=
>>=
>>>=

3.4.11 逗号操作符

let num = 1,num2 = 2,num3 = 3;

3.6 语句

3.6.1 if 语句


if (a) {
	// a为true时运行
} else {
	// a为false时运行
}

3.6.2 do-while 语句

do {
	// 符合条件运行
	// 至少运行一次
} while (条件)

3.6.3 while 语句

while (条件) {
	// 条件为真运行
	// 可能一次都不运行
}

3.6.4 for 语句

for (i = 0;i < 5; i++) {
	// 符合条件就运行
}

3.6.5 for-in 语句
3.6.6 for-of 语句
3.6.7 标签语句
3.6.8 break 和continue 语句
3.6.9 with 语句
3.6.10 switch 语句

3.7 函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值