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() 几位数,根据数字和精度决定调用以上两种方法(参数为数字的总位数)
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。两个对象则比较是否为同一个对象(实例)。
=== !==
标签:返回,字符,精简版,导图,Number,JS,str,字符串,数字 来源: https://blog.csdn.net/weixin_43960657/article/details/120661295