update:js的数据类型之String和Number

This commit is contained in:
qianguyihao 2018-11-25 18:10:54 +08:00
parent 6c4b4fdf4a
commit ee36d96327
2 changed files with 71 additions and 33 deletions

View File

@ -4,7 +4,7 @@
> 以下是正文。 > 以下是正文。
## JavaScript简介 ## JavaScript背景
Web前端有三层 Web前端有三层
@ -20,7 +20,7 @@ JavaScript是世界上用的最多的**脚本语言**。
JavaScript诞生于**1995年**。布兰登 • 艾奇Brendan Eich1961年1995年在网景公司发明的JavaScript。 JavaScript诞生于**1995年**。布兰登 • 艾奇Brendan Eich1961年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 ScriptFlash中用的语言。就是说你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)

View File

@ -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 本身。
2isNaN() :任何不能被转换为数值的值都会导致这个函数返回 true。 2isNaN() :任何不能被转换为数值的值,都会让这个函数返回 true。
```javascript ```javascript
isNaN(NaN);// true isNaN(NaN);// true
@ -290,7 +328,7 @@ Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,
**浮点数的运算** **浮点数的运算**
在JS中整数的运算可以很精确,但是**小数的运算,可能会得到一个不精确的结果**。所以千万不要使用JS进行对精确度要求比较高的运算。 在JS中整数的运算**基本**可以保证精确;但是**小数的运算,可能会得到一个不精确的结果**。所以千万不要使用JS进行对精确度要求比较高的运算。
如下: 如下: