JS高级程序设计精简版(第三章:语言基础)附思维导图

        时隔两年后二刷JavaScript高级程序语言,纯手打读书笔记+思维导图,让自己有一个比较全面的知识体系,后面有遇到例子的时候会慢慢补充更多的用法。有不足之处欢迎大家评论区指出,共勉!!

第三章 语言基础

一、数据类型检测——typeof

检测给定变量的数据类型——typeof

“undefined”——如果这个值未定义;

“boolean”——如果这个值是布尔值;

“string"——如果这个值是字符串;

”number“——如果这个值是数值;

”object”——如果这个值是对象或者null;

“function"——如果这个值是函数!!!

二、基本数据类型——Undefined、null、boolean

1、undefined

表示变量声明了但未初始化,未声明和未初始化的变量typeof 都会返回undefined

2、Null

表示一个空对象指针,所以对象变量建议用null初始化。

注意 undefined值是派生自null值的,所以 alert(null == undefined); //true

3、Boolean

三、基本数据类型——Number

一)JS数字

1、JS数字

JS数字始终以双精度浮点数来存储,即53位底数,10位指数,1位符号(ltr)。

精度:十进制精度为15.95 位(2的53次方,Number.MAX_SAFE_INTEGER)。

小数点:小数的最大精度为17位,但浮点运算并不精确。

最大数:最大数字为Number.MAX_VALUE,即1.79*10^308次方。

2、进制

        八进制(0开头,严格模式无效,出现大于7的数字就会被当作十进制)

        十进制

        十六进制(0x开头)

3、判断数字

非数字为NaN,可用全局方法isNaN()判断是否为一个NaN

4、Number的属性

无穷大:

数字超过Number.MAX_VALUE则为Infinity,超过最小Number.MIN_VALUE则为-Infinity

typeof NaN 和typeof Infinity都返回 number。

二)JS数字方法

1、数字返回字符串的方法

toString()方法  直接返回数字的字符串形式,或者有参数,将十进制转其他进制 toString(2/8/16)

使用指数计数法:toExponential()  已被四舍五入(参数为位数)的数字

指定位数小数:toFixed()   返回指定位数小数的数字(四舍五入)

toPrecision()  

参数范围:1-100,超过100会报错,参数是数字的精度(精确到几位数,不是精确到几位小数),会根据数字和精度决定调用以上两种方法。

省略参数:调用toString()原样返回数字的字符串形式

2、变量转为数字类型(全局方法)

Number()  返回数字或NaN,也可用于date返回毫秒,null返回0,undefined返回NaN。若字符类型:忽略开头的0,支持十/十六进制,但都返回对应的十进制。

ParseInt()   整数,空字符串返回NaN(若第一个非数字、+-就立即返回NaN)

ParseFloat()  允许小数,但只解析十进制,八/十六会被认为是0

3、Number类的方法

Number.isInteger():判断一个数是否以整数的形式保存的(1.00为true)

四、基本数据类型——symbol符号

1、symbol简介

特点:symbol的实例是唯一且不可变的。

创建:let sym = Symbol('foo')初始化,不能用new(避免创建符号包装对象)!,’foo’

Symbol.for() 类似单例模式,有该字符串参数作为名称的 Symbol 则返回值,无则创建。

2、用法

第一种:用在object中作为唯一key,object[sym] = 111

第二种:定义常量,避免case值重复

注意:Symbol 值作为属性名时,该属性是公有属性。不会出现在 for...in,Object.keys()等枚举,可以通过 Object.getOwnPropertySymbols()取到。

五、基本数据类型——String

一)字符串简介

1、特殊符号

\转义字符

\b 退格   \f换页   \n 新行   \r回车    \t水平制表符    \v垂直制表符

注意,n个字符长的转移序列只表示一个字符(在length里表示1)

2.注意

通过new定义的字符串、数字、布尔是对象,而不是原始值,这会拖慢执行速度。

要注意==和===,因为JavaScript 对象无法进行对比==(x和y为不同的对象)。

switch使用的是===

当==两个对象时,比较的是两对象是否是同一个实例,或者说同一个对象引用

3.length

js字符串由16位码元组成。

注意:n个字符长的转移序列只表示一个字符(在length里表示1),如果字符串中包含双字节字符(中文),那么length 也按照一个字符计算。

4、模板字面量

模板字面量 ` 原模原样输出,包括空格、跨行`

字符串插值  ${变量,这里是JS表达式}

5、转为字符串的方法

1)aaa.toString()   //null和undefined没有这个方法

2)String()  //可用任何类型

二)字符串的方法

原始值无法拥有属性和方法(不是对象),但js中,在对原始值使用方法和属性时,会将原始值视为对象。

所有字符串方法都会返回新字符串,因为字符串是不可变的,只能替换。

1、查找

indexOf()    lastIndexOf()  (str, beginIdx)无法用正则

Search() 可以用正则 但是无第二参数

2、提取部分字符串

Slice(start,end)

Substring(start,end)无法接受负索引,若为负数,则为0。

Substr(start,length)length为负则为0

3、替换字符

replace(a,b)把a替换成b

4、连接

str.concat(“a”,”b”)   代替 + 号

5、格式 :

去除空格 trim()  

大小写转换 toLowerCase()   toUpperCase()

6、提取字符串中的字符

charAt(0):返回0索引字符   

charCodeAt(0)返回索引0的字符unicode

7、属性访问字符串

 str[0] 只读,若无则返回undefined,而charAt(0)若无返回””

8、字符转为数组

str.split() 返回[str],    str.split(“”)返回[“s”,”t”,”r”];

9、复制与填充

repeat(n)复制字符串n次

padStart(n,’s’)  padEnd(n,’s’)    以s填充字符直到str长度满n

10、迭代与解构

字符串原型上有一个@iterator方法,可迭代字符串每个字符。

let message = "abc";

let stringIterator = message[Symbol.iterator]();

console.log(stringIterator.next()); // {value: "a", done: false}

也可以用for-of迭代   for( const msg of ‘abcd’){}

解构:[...msg] = [‘a’,’b’,’c’]

按字母表排序: str.localeCompare(str2) str排前面返回负值,妙就妙在按照当地的规则排序的。

六、操作符

1、一元操作符

++  --  +  -   这些可以用在字符串前面,会自动Number()

2、位运算符

将64位的值转为32位整数再操作

!(!+1就是相反数) &  |  ^(异为1)  <<  >>  >>>(注意负数)

位运算比算术运算要快得多。

3、逻辑运算符

&& 第一个操作数是对象,就返回第二个操作数

||

4、乘性操作符

会先Number()再运算

*  /  %

5、加性操作符

+  -  +有字符串相连 但-只会触发Number()

6、关系操作符

 >  <  >=  <=   

有数字则ValueOf(),都是字符串则unicode比较,ABC比abc小。

7、相等操作符

==   !=   有一个对象,则valueOf。两个对象则比较是否为同一个对象(实例)。

===   !==

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值