1999 |
ECMAScript 3 |
添加正则表达式
<p>添加try/catch</p>
</td>
</tr><tr><td> </td>
<td>ECMAScript 4</td>
<td>没有发布</td>
</tr><tr><td>2009</td>
<td>ECMAScript 5</td>
<td>
<p>添加"strict mode"严格模式</p>
<p>添加JSON支持</p>
</td>
</tr><tr><td>2011</td>
<td>ECMAScript 5.1</td>
<td>版本变更</td>
</tr><tr><td>2015</td>
<td>ECMAScript 6</td>
<td>添加类和模块</td>
</tr><tr><td>2016</td>
<td>ECMAScript 7</td>
<td>
<p>增加指数运算符(**)</p>
<p>增加Array.prototype.includes</p>
</td>
</tr></tbody></table></div><p><strong>注:ES6就是指ECMAScript 6.</strong></p>
3. 简单总结
尽管ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:
- 核心(ECMAScript)
- 文档对象模型(DOM)Document object model(整合js、css、html)
- 浏览器对象模型(BOM)Broswer object model(整合js和浏览器)
简单地说,ECMAScript描述了JavaScript语言本身的相关内容.
- JavaScript是脚本语言.
- JavaScript是一种轻量级的编程语言.
- JavaScript是可插入HTML页面的编程代码.
- JavaScript插入HTML页面后,可由所有的现代浏览器执行.
- JavaScript很容易学习.
#. 用法
JavaScript中一切皆对象:字符串、数值、数组、函数...
JavaScript提供了多个内建对象,比如String、Date、Array...
JavaScript还允许自定义对象.
1. 引入方式
1. 将JS代码写在script标签内:
script标签一般写在head标签内,但也可写在body内部.
2. 引入.JS文件:
2. 规范
1. 注释(注释是代码之母)
2. 结束符
JavaScript中的语句要以分号 " ; " 为结束符:
3. 变量声明
- JavaScript的变量可以由下划线、数字、字母、$组成,但不能以数字开头.
- 声明变量使用 var 变量名 = 值; 的格式来声明:
注意:
- JavaScript中的变量名是区分大小写的.
- 推荐使用驼峰式命名规则.
- 保留字不能用做变量名.
ES6新增了let命令,用于声明变量,其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效.
for循环的计数器就很适合使用let命令:
ES6新增了const命令,用来声明变量。一旦声明,其值便不可被更改:
保留字段
#. 数据类型
JavaScript拥有动态数据类型:
1. 数值(Number)
JavaScript不区分整数型和浮点型,就只有一种数字类型:
还有一种NaN,表示不是一个数字(Not a Number):
NaN属性是代表非数字值的特殊值,该属性用于指示某个值不是数字.
2. 字符串(String)
常用方法:
方法 |
功能 |
|
.length |
返回长度 |
|
.trim() |
移除两端空格,返回值是一个新值 |
|
.trimLeft() |
移除左边空格 |
|
.trimRight() |
移除右边空格 |
|
.charAt(n) |
返回索引值为n的字符 |
|
.concat(s1, s2) |
拼接,可拼接多个字符串 |
|
.index(s, n) |
获取s的索引,n为查找的起始位置(索引值) |
|
.substring(from, to) |
切片,顾头不顾尾 |
|
.slice(start, end) |
切片,顾头不顾尾 |
|
.toLowerCase() |
小写 |
|
.toUpperCase() |
大写 |
|
.split(s, n) |
分割,以s为分隔符,n为分隔得到的列表的长度 |
|
slice与substring的区别:
两者相同点:
- 如果start等于end,返回空字符串.
- 如果stop参数省略,则取到字符串末尾.
- 如果某个参数超过了string的长度,那么这个会被替换为string的长度.
substirng()特点:
- 如果 start > stop,start和stop将被交换.
- 如果参数是负数或者不是数字,将替换为0.
silce()特点:
- 如果 start > stop,不会交换两者.
- 如果start或stop小于0,将倒数索引.
ES6中引入了模版字符串(template string),模版字符串是增强版的字符串,用反引号 " ` " 标示。
模版字符串可以当作普通的字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量:
注意:如果模版字符串中需要使用反引号,则要在其前面用反斜杠转译.
JSHint启用ES6语法支持: /* jshint esversion:6 */
3. 布尔值(Boolean)
布尔值有true、false之分;true为真,false为假。空字符串、0、null、undefined、NaN都为false.
4. null与undefined
- null:表示值为空,一般在需要指定或清空一个变量时才会使用,如name = null;
- undefined:变量的默认值,当声明一个变量但未初始化时,该变量的值便为undefined,还有函数的默认返回值也为此.
null表示变量的值为空,undefined表示只声明了变量,但还没有赋值.
5. 数组
使用单独的变量名来存储一系列的值:
常用方法
方法 |
说明 |
.length |
返回数组的长度 |
.push() |
在尾部追加元素 |
.pop() |
弹出尾部的元素 |
.unshift() |
在头部插入元素 |
.shift() |
弹出头部的元素 |
.slice(start, end) |
切片 |
.reverse() |
反转 |
.join('_') |
将数组元素以'_'为分隔符拼接成字符串 |
.concat(lst1, lst2, ...) |
连接数组 |
.sort() |
排序 |
.forEach(0 |
将数组的每个元素传递给回调函数 |
.splice(i, n, v) |
从索引i开始删元素,删n个,删除的元素全替换为v
|
.map() |
返回一个数组元素调用函数处理后的值的新数组 |
sort()方法详述:
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
若按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字:
-
function sortNumber(a, b) {
-
-
-
-
var lst = [11, 100, 22, 55, 33, 44];
-
关于for遍历数组:
-
var lst = [1, 2, 3, 4, 5, 6, 7, 8, 9];
-
-
for (var i=0;i<=lst.length;i++) {
-
-
ForEach的正确姿势:
map的正确姿势:
补充:
ES6新引入了一种原始数据类型(Symbol),表示独一无二的值。它是JavaScript语言中的第七种数据类型.
6. 类型查询(typeof)
typeof是一元运算符(就像++、--、!、- 等一元运算符),不是方法,也不是函数.
对变量或值调用typeof运算符将返回下列值之一:
- undefined - 如果变量是 Undefined 类型的
- boolean - 如果变量是 Boolean 类型的
- number - 如果变量是 Number 类型的
- string - 如果变量是 String 类型的
- object - 如果变量是一种引用类型或 Null 类型的
7. 运算符
1. 算数运算符:+ - * / % ++ --
2. 比较运算符:> >= < <= != == === !==
"=="只比较值,"==="会比较值和值的内存地址:
3. 逻辑运算符:&& || !
4. 赋值运算符:= += -= *= /=
#. 流程控制
1. if-else
-
-
-
-
-
-
-
2. if-else if-else
-
-
-
-
-
-
-
-
-
3. switch
-
var day = new Date().getDay();
-
-
-
-
-
-
-
-
-
-
-
switch中的case子句通常都会加break语句,否则程序会继续执行后续case中的语句.
4. for
-
-
-
-
5. while
-
-
-
-
-
-
6. 三元运算
-
-
-
-
"
- JavaScript基础
JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Javascript基础回顾 之(三) 面向对象
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- Javascript基础回顾 之(二) 作用域
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- Javascript基础回顾 之(一) 类型
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- JavaScript 基础回顾——对象
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
- javascript基础01
javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...
- javascript基础02
javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
随机推荐
- 220. 存在重复元素 III
题目: 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: ...
- 【STM32H7教程】第60章 STM32H7的DAC应用之定时器触发实现DMA方式双通道波形
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第60章 STM32H7的DAC应用之定时器触发实 ...
- python面试的100题(4)
4.打乱一个排好序的list对象alist? import random alist = [1,2,3,4,5] random.shuffle(alist) print(alist) 结果为:[2, ...
- 找到所有的txt文件并删除
1.find /oldboy/ -type f -name "*.txt" -delete 2.find /oldboy/ -type f -name "*.txt&qu ...
- Apache Kafka(七)- Kafka ElasticSearch Comsumer
Kafka ElasticSearch Consumer 对于Kafka Consumer,我们会写一个例子用于消费Kafka 数据传输到ElasticSearch. 1. 构造ElasticSear ...
- 【C语言】利用递归函数求n的阶乘
递归实现n的阶乘 什么是阶乘:0!= 1,n!=n * (n - 1) * (n - 2)......3 * 2 * 1: 解题思路: 1> 分析题意,很明显0是递归出口: ...
- (c#)亲密字符串
题目 解
- 13.56Mhz下直接阻抗匹配调试步骤
直接匹配阻抗,天线与射频芯片在同一块板子,调试步骤与50欧姆阻抗匹配调试天线参数差不多,多了一部分射频芯片端的滤波部分的参数计算.下面介绍调试过程. 1.首先看一下射频芯片发射部分原理图:分析原理图时 ...
- imread函数+cvtColor()函数
加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值 IMREAD_UNCH ...
- 【代码总结】Spring MVC数据校验
1.实验介绍 --------------------------------------------------------------------------------------------- ...
|