From ee36d963275b19725ed39a5fc5b30894c5319237 Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Sun, 25 Nov 2018 18:10:54 +0800 Subject: [PATCH] =?UTF-8?q?update:js=E7=9A=84=E6=95=B0=E6=8D=AE=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=B9=8BString=E5=92=8CNumber?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01-JavaScript语法基础:JS简介.md | 22 ++--- .../02-JavaScript语法基础:变量.md | 82 ++++++++++++++----- 2 files changed, 71 insertions(+), 33 deletions(-) diff --git a/03-JavaScript基础/01-JavaScript语法基础:JS简介.md b/03-JavaScript基础/01-JavaScript语法基础:JS简介.md index a620087..5eae302 100644 --- a/03-JavaScript基础/01-JavaScript语法基础:JS简介.md +++ b/03-JavaScript基础/01-JavaScript语法基础:JS简介.md @@ -4,7 +4,7 @@ > 以下是正文。 -## JavaScript简介 +## JavaScript背景 Web前端有三层: @@ -20,7 +20,7 @@ JavaScript是世界上用的最多的**脚本语言**。 JavaScript诞生于**1995年**。布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。 -JavaScript是由**网景**公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为了JavaScript +JavaScript是由**网景**公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为了JavaScript。 > 备注:由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript。如同“北大”和“北大青鸟”的关系。“北大青鸟”就是傍“北大”大牌。 @@ -32,15 +32,15 @@ ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英 JavaScript是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以欧洲的这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。 -简单来说,**ECMAScript不是一门语言,而是一个标准**。符合这个标准的比较常见的有:JavaScript、Action Script(Flash中用的语言)。就是说,你JavaScript学完了,Flash中的程序也就轻而易举了。 +简单来说,**ECMAScript不是一门语言,而是一个标准**。 -ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强(也包含了很多新特性)。但是,浏览器的厂商不能那么快去追上这个标准。 +ECMAScript在2015年6月,发布了ECMAScript 6版本(ES6),语言的能力更强(也包含了很多新特性)。但是,浏览器的厂商不会那么快去追上这个标准,需要时间。 ### JavaScript的发展:蒸蒸日上 -2003年之前,JavaScript被认为“牛皮鲜”,用来制作页面上的广告,弹窗、漂浮的广告。什么东西让人烦,什么东西就是JavaScript开发的。所以浏览器就推出了屏蔽广告功能。 +2003年之前,JavaScript被认为“牛皮鲜”,用来制作页面上的广告,弹窗、漂浮的广告。什么东西让人烦,什么东西就是JavaScript开发的。所以很多浏览器就推出了屏蔽广告功能。 -2004年,JavaScript命运开始改变,那一年,**谷歌公司开始带头使用Ajax技术**,Ajax技术就是JavaScript的一个应用。并且,那时候人们逐渐开始提升用户体验了。Ajax有一些应用场景。比如,当我们在百度搜索框搜文字时,输入框下方的智能提示,可以通过Ajax实现。比如,当我们注册网易邮箱时,能够及时发现用户名是否被占用,而不用调到另外一个页面。 +2004年,JavaScript命运开始改变。那一年,**谷歌公司开始带头使用Ajax技术**,Ajax技术就是JavaScript的一个应用。并且,那时候人们逐渐开始提升用户体验了。Ajax有一些应用场景。比如,当我们在百度搜索框搜文字时,输入框下方的智能提示,可以通过Ajax实现。比如,当我们注册网易邮箱时,能够及时发现用户名是否被占用,而不用调到另外一个页面。 2007年乔布斯发布了第一款iPhone,这一年开始,用户就多了上网的途径,就是用移动设备上网。 **JavaScript在移动页面中,也是不可或缺的**。并且这一年,互联网开始标准化,按照W3C规则三层分离,JavaScript越来越被重视。 @@ -54,13 +54,13 @@ ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强 虽然目前WebApp在功能和性能上的体验远不如Native App,但是“WebApp慢慢取代Native App”很有可能是未来的趋势。 -## JavaScript编程相关 +## JavaScript介绍 ### JavaScript入门易学性 - JavaScript对初学者比较友好。 -- JavaScript是有界面效果的(比如C语言只有白底黑字)。 +- JavaScript是有界面效果的(比如C语言却只有白底黑字)。 - JavaScript是**弱变量类型**的语言,变量只需要用var来声明。而Java中变量的声明,要根据变量的类型来定义。 @@ -74,7 +74,7 @@ ECMAScript在2015年6月,发布了ECMAScript 6版本,语言的能力更强 boolean a; ``` -而JavaScript中,只用定义一个变量: +而JavaScript中,只需要用一种方式来定义: ```JavaScript var a; @@ -318,9 +318,9 @@ JS代码如下: ## 我的公众号 -想学习**代码之外的软技能**?不妨关注我的微信公众号:**生命团队**(id:`vitateam`)。 +想学习**代码之外的软技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。 扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: -![](http://img.smyhvae.com/2016040102.jpg) +![](http://img.smyhvae.com/20160401_01.jpg) diff --git a/03-JavaScript基础/02-JavaScript语法基础:变量.md b/03-JavaScript基础/02-JavaScript语法基础:变量.md index 099bc7d..14163f5 100644 --- a/03-JavaScript基础/02-JavaScript语法基础:变量.md +++ b/03-JavaScript基础/02-JavaScript语法基础:变量.md @@ -99,9 +99,9 @@ implements、import、int、interface、long、native、package、private、prot var a = 888; //变量2 ``` -我们来整理一下变量的命名规则: +我们来整理一下**变量的命名规则**: -1.驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc +1.建议用驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc 2.变量命名必须以字母或是下标符号”_”或者”$”为开头。 @@ -111,17 +111,21 @@ implements、import、int、interface、long、native、package、private、prot 5.不用使用脚本语言中保留的**关键字**及**保留字**作为变量名。 -6.变量名区分大小写。(javascript是区分大小写的语言) +6.变量名区分大小写(javascript是区分大小写的语言)。 -7.汉语可以作为变量名。但是不建议使用,因为 low +7.汉语可以作为变量名。但是不建议使用,因为 low。 ## 标识符 -**标识符**:在JS中所有的可以由我们自主命名的都可以称之为标识符。 +**标识符**:在JS中所有的可以由我们**自主命名**的都可以称之为标识符。 例如:变量名、函数名、属性名都是属于标识符。 +**标识符的命名规则**和变量的命令规则是一样的。看上面一段就可以了。 + +重点要注意的是:标识符不能使用脚本语言中保留的**关键字**及**保留字**。如下。 + **关键字**: ![](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 未定义。 - **引用数据类型(引用类型)**: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` 表示换行 +- `\r` 表示回车 + - `\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 在JS中所有的数值都是Number类型,包括整数和浮点数(小数)。 @@ -239,15 +285,6 @@ PS:内置对象function、Array、Date、RegExp、Error等都是属于Object number ``` -**补充知识:** - -`typeof()`表示“**获取变量的类型**”,返回的是小写,语法为: - -``` -typeof 变量 -``` - -在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。 **数值范围:** @@ -263,7 +300,8 @@ typeof 变量 - 无穷小(负无穷):-Infinity -注意,使用`typeof`检查Infinity也会返回number。 +注意:`typeof Infinity`的返回结果是number。 + **NaN和isNaN()函数:** @@ -272,14 +310,14 @@ typeof 变量 ```javascript console.log("abc" / 18); //结果是NaN - console.log("abc" * "abcd"); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是结果是NaN + console.log("abc" * "abcd"); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是NaN ``` 注意:`typeof NaN`的返回结果是number。 Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,包括 NaN 本身。 -(2)isNaN() :任何不能被转换为数值的值都会导致这个函数返回 true。 +(2)isNaN() :任何不能被转换为数值的值,都会让这个函数返回 true。 ```javascript isNaN(NaN);// true @@ -290,7 +328,7 @@ Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等, **浮点数的运算**: -在JS中,整数的运算可以很精确,但是**小数的运算,可能会得到一个不精确的结果**。所以,千万不要使用JS进行对精确度要求比较高的运算。 +在JS中,整数的运算**基本**可以保证精确;但是**小数的运算,可能会得到一个不精确的结果**。所以,千万不要使用JS进行对精确度要求比较高的运算。 如下: