update:js的数据类型之String和Number
This commit is contained in:
		
							parent
							
								
									6c4b4fdf4a
								
							
						
					
					
						commit
						ee36d96327
					
				@ -4,7 +4,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
> 以下是正文。
 | 
					> 以下是正文。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## JavaScript简介
 | 
					## JavaScript背景
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Web前端有三层:
 | 
					Web前端有三层:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -20,7 +20,7 @@ JavaScript是世界上用的最多的**脚本语言**。
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
JavaScript诞生于**1995年**。布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。
 | 
					JavaScript诞生于**1995年**。布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JavaScript是由**网景**公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为了JavaScript
 | 
					JavaScript是由**网景**公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为了JavaScript。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> 备注:由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript。如同“北大”和“北大青鸟”的关系。“北大青鸟”就是傍“北大”大牌。
 | 
					> 备注:由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript。如同“北大”和“北大青鸟”的关系。“北大青鸟”就是傍“北大”大牌。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -32,15 +32,15 @@ ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
JavaScript是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以欧洲的这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。
 | 
					JavaScript是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以欧洲的这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
简单来说,**ECMAScript不是一门语言,而是一个标准**。符合这个标准的比较常见的有:JavaScript、Action Script(Flash中用的语言)。就是说,你JavaScript学完了,Flash中的程序也就轻而易举了。
 | 
					简单来说,**ECMAScript不是一门语言,而是一个标准**。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强(也包含了很多新特性)。但是,浏览器的厂商不能那么快去追上这个标准。
 | 
					ECMAScript在2015年6月,发布了ECMAScript 6版本(ES6),语言的能力更强(也包含了很多新特性)。但是,浏览器的厂商不会那么快去追上这个标准,需要时间。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### JavaScript的发展:蒸蒸日上
 | 
					### JavaScript的发展:蒸蒸日上
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2003年之前,JavaScript被认为“牛皮鲜”,用来制作页面上的广告,弹窗、漂浮的广告。什么东西让人烦,什么东西就是JavaScript开发的。所以浏览器就推出了屏蔽广告功能。
 | 
					2003年之前,JavaScript被认为“牛皮鲜”,用来制作页面上的广告,弹窗、漂浮的广告。什么东西让人烦,什么东西就是JavaScript开发的。所以很多浏览器就推出了屏蔽广告功能。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2004年,JavaScript命运开始改变,那一年,**谷歌公司开始带头使用Ajax技术**,Ajax技术就是JavaScript的一个应用。并且,那时候人们逐渐开始提升用户体验了。Ajax有一些应用场景。比如,当我们在百度搜索框搜文字时,输入框下方的智能提示,可以通过Ajax实现。比如,当我们注册网易邮箱时,能够及时发现用户名是否被占用,而不用调到另外一个页面。
 | 
					2004年,JavaScript命运开始改变。那一年,**谷歌公司开始带头使用Ajax技术**,Ajax技术就是JavaScript的一个应用。并且,那时候人们逐渐开始提升用户体验了。Ajax有一些应用场景。比如,当我们在百度搜索框搜文字时,输入框下方的智能提示,可以通过Ajax实现。比如,当我们注册网易邮箱时,能够及时发现用户名是否被占用,而不用调到另外一个页面。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2007年乔布斯发布了第一款iPhone,这一年开始,用户就多了上网的途径,就是用移动设备上网。
 | 
					2007年乔布斯发布了第一款iPhone,这一年开始,用户就多了上网的途径,就是用移动设备上网。
 | 
				
			||||||
**JavaScript在移动页面中,也是不可或缺的**。并且这一年,互联网开始标准化,按照W3C规则三层分离,JavaScript越来越被重视。
 | 
					**JavaScript在移动页面中,也是不可或缺的**。并且这一年,互联网开始标准化,按照W3C规则三层分离,JavaScript越来越被重视。
 | 
				
			||||||
@ -54,13 +54,13 @@ ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强
 | 
				
			|||||||
虽然目前WebApp在功能和性能上的体验远不如Native App,但是“WebApp慢慢取代Native App”很有可能是未来的趋势。
 | 
					虽然目前WebApp在功能和性能上的体验远不如Native App,但是“WebApp慢慢取代Native App”很有可能是未来的趋势。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## JavaScript编程相关
 | 
					## JavaScript介绍
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### JavaScript入门易学性
 | 
					### JavaScript入门易学性
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- JavaScript对初学者比较友好。
 | 
					- JavaScript对初学者比较友好。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- JavaScript是有界面效果的(比如C语言只有白底黑字)。
 | 
					- JavaScript是有界面效果的(比如C语言却只有白底黑字)。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- JavaScript是**弱变量类型**的语言,变量只需要用var来声明。而Java中变量的声明,要根据变量的类型来定义。
 | 
					- JavaScript是**弱变量类型**的语言,变量只需要用var来声明。而Java中变量的声明,要根据变量的类型来定义。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -74,7 +74,7 @@ ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强
 | 
				
			|||||||
	boolean a;
 | 
						boolean a;
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
而JavaScript中,只用定义一个变量:
 | 
					而JavaScript中,只需要用一种方式来定义:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```JavaScript
 | 
					```JavaScript
 | 
				
			||||||
	var a;
 | 
						var a;
 | 
				
			||||||
@ -318,9 +318,9 @@ JS代码如下:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 我的公众号
 | 
					## 我的公众号
 | 
				
			||||||
 | 
					
 | 
				
			||||||
想学习<font color=#0000ff>**代码之外的软技能**</font>?不妨关注我的微信公众号:**生命团队**(id:`vitateam`)。
 | 
					想学习<font color=#0000ff>**代码之外的软技能**</font>?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
 | 
					扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -99,9 +99,9 @@ implements、import、int、interface、long、native、package、private、prot
 | 
				
			|||||||
	var a = 888;    //变量2
 | 
						var a = 888;    //变量2
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
我们来整理一下变量的命名规则:
 | 
					我们来整理一下**变量的命名规则**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1.驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc
 | 
					1.建议用驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2.变量命名必须以字母或是下标符号”_”或者”$”为开头。
 | 
					2.变量命名必须以字母或是下标符号”_”或者”$”为开头。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -111,17 +111,21 @@ implements、import、int、interface、long、native、package、private、prot
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
5.不用使用脚本语言中保留的**关键字**及**保留字**作为变量名。
 | 
					5.不用使用脚本语言中保留的**关键字**及**保留字**作为变量名。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
6.变量名区分大小写。(javascript是区分大小写的语言)
 | 
					6.变量名区分大小写(javascript是区分大小写的语言)。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
7.汉语可以作为变量名。但是不建议使用,因为 low
 | 
					7.汉语可以作为变量名。但是不建议使用,因为 low。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 标识符
 | 
					## 标识符
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**标识符**:在JS中所有的可以由我们自主命名的都可以称之为标识符。
 | 
					**标识符**:在JS中所有的可以由我们**自主命名**的都可以称之为标识符。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
例如:变量名、函数名、属性名都是属于标识符。
 | 
					例如:变量名、函数名、属性名都是属于标识符。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**标识符的命名规则**和变量的命令规则是一样的。看上面一段就可以了。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					重点要注意的是:标识符不能使用脚本语言中保留的**关键字**及**保留字**。如下。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**关键字**:
 | 
					**关键字**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
@ -140,18 +144,24 @@ implements、import、int、interface、long、native、package、private、prot
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
变量里面能够存储数字、字符串等。变量会自动的根据存储内容的类型不同,来决定自己的类型。
 | 
					变量里面能够存储数字、字符串等。变量会自动的根据存储内容的类型不同,来决定自己的类型。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
数据类型指的就是字面量的类型,**在JS中一共有六种数据类型**:
 | 
					**在JS中一共有六种数据类型**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **基本数据类型(值类型)**:String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。
 | 
					- **基本数据类型(值类型)**:String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **引用数据类型(引用类型)**:Object 对象。
 | 
					- **引用数据类型(引用类型)**:Object 对象。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PS:内置对象function、Array、Date、RegExp、Error等都是属于Object。
 | 
					注意:内置对象function、Array、Date、RegExp、Error等都是属于Object类型。也就是说,除了那五种基本数据类型之外,其他的,都称之为 Object类型。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
基本数据类型:参数赋值的时候,传数值。
 | 
					> 面试问:引用数据类型有几种?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。
 | 
					> 面试答:只有一种,即 Object 类型。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**数据类型之间最大的区别**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 基本数据类型:参数赋值的时候,传数值。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
接下来,我们详细讲一下基本数据类型。
 | 
					接下来,我们详细讲一下基本数据类型。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -202,8 +212,12 @@ PS:内置对象function、Array、Date、RegExp、Error等都是属于Object
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- `\n` 表示换行
 | 
					- `\n` 表示换行
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `\r` 表示回车
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- `\t` 表示制表符
 | 
					- `\t` 表示制表符
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `\b` 表示空格
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- `\\` 表示`\`
 | 
					- `\\` 表示`\`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
举例:
 | 
					举例:
 | 
				
			||||||
@ -224,6 +238,38 @@ PS:内置对象function、Array、Date、RegExp、Error等都是属于Object
 | 
				
			|||||||
	\\\
 | 
						\\\
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					将其他数值转换为字符串有三种方式:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 拼串
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- toString()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- String()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 补充知识:typeof 运算符
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`typeof()`表示“**获取变量的类型**”,返回的是小写,语法为:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					typeof 变量
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**返回结果**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `typeof 数值`的返回结果:number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `typeof 字符串`的返回结果:string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `typeof 布尔型`的返回结果:boolean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `typeof undefined`的返回结果:undefined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `typeof null`的返回结果:object
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 数值型:Number
 | 
					## 数值型:Number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
在JS中所有的数值都是Number类型,包括整数和浮点数(小数)。
 | 
					在JS中所有的数值都是Number类型,包括整数和浮点数(小数)。
 | 
				
			||||||
@ -239,15 +285,6 @@ PS:内置对象function、Array、Date、RegExp、Error等都是属于Object
 | 
				
			|||||||
number
 | 
					number
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**补充知识:**
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
`typeof()`表示“**获取变量的类型**”,返回的是小写,语法为:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
typeof 变量
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
**数值范围:**
 | 
					**数值范围:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -263,7 +300,8 @@ typeof 变量
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- 无穷小(负无穷):-Infinity
 | 
					- 无穷小(负无穷):-Infinity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
注意,使用`typeof`检查Infinity也会返回number。
 | 
					注意:`typeof Infinity`的返回结果是number。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**NaN和isNaN()函数:**
 | 
					**NaN和isNaN()函数:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -272,14 +310,14 @@ typeof 变量
 | 
				
			|||||||
```javascript
 | 
					```javascript
 | 
				
			||||||
    console.log("abc" / 18);  //结果是NaN
 | 
					    console.log("abc" / 18);  //结果是NaN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log("abc" * "abcd"); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是结果是NaN
 | 
					    console.log("abc" * "abcd"); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是NaN
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
注意:`typeof NaN`的返回结果是number。
 | 
					注意:`typeof NaN`的返回结果是number。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,包括 NaN 本身。
 | 
					Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,包括 NaN 本身。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(2)isNaN() :任何不能被转换为数值的值都会导致这个函数返回 true。
 | 
					(2)isNaN() :任何不能被转换为数值的值,都会让这个函数返回 true。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```javascript
 | 
					```javascript
 | 
				
			||||||
	isNaN(NaN);// true
 | 
						isNaN(NaN);// true
 | 
				
			||||||
@ -290,7 +328,7 @@ Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
**浮点数的运算**:
 | 
					**浮点数的运算**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
在JS中,整数的运算可以很精确,但是**小数的运算,可能会得到一个不精确的结果**。所以,千万不要使用JS进行对精确度要求比较高的运算。
 | 
					在JS中,整数的运算**基本**可以保证精确;但是**小数的运算,可能会得到一个不精确的结果**。所以,千万不要使用JS进行对精确度要求比较高的运算。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
如下:
 | 
					如下:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user