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`)。
|
||||||
|
|
||||||
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
|
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
|
||||||
|
|
||||||
![](http://img.smyhvae.com/2016040102.jpg)
|
![](http://img.smyhvae.com/20160401_01.jpg)
|
||||||
|
|
||||||
|
@ -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中所有的可以由我们**自主命名**的都可以称之为标识符。
|
||||||
|
|
||||||
例如:变量名、函数名、属性名都是属于标识符。
|
例如:变量名、函数名、属性名都是属于标识符。
|
||||||
|
|
||||||
|
**标识符的命名规则**和变量的命令规则是一样的。看上面一段就可以了。
|
||||||
|
|
||||||
|
重点要注意的是:标识符不能使用脚本语言中保留的**关键字**及**保留字**。如下。
|
||||||
|
|
||||||
**关键字**:
|
**关键字**:
|
||||||
|
|
||||||
![](http://img.smyhvae.com/20180714_1421.png)
|
![](http://img.smyhvae.com/20180714_1421.png)
|
||||||
@ -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…
Reference in New Issue
Block a user