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数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
随机推荐
- sftp,ftp文件下载
一.sftp工具类 package com.ztesoft.iotcmp.util; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsc ...
- django 搭建一个投票类网站(三)
之前修改index的视图的代码,工作原理是先试用loader方法加载视图,然后HTTPResponse方法初始化一个HTTPResponse对象并返回给浏览器.对于很多django视图来说,他们的工作 ...
- JavaScript对象之原型链
一个js对象,除了自己设置的属性外,还会自动生成proto.class.extensible属性,其中,proto属性指向对象的原型. 对象的属性也有writable.enumerable.confi ...
- 家庭记账小账本Android studio
经过长达7天多的时间,从Android studio的安装碰到很多的问题,真的很不走运,别人安装Android studio都是一气呵成,我的Android真的没话说 把自己的这些天的开发成果展示一下 ...
- L2-2 小字辈
思路 bfs搜一下. 代码 #include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; vector<i ...
- 每天进步一点点------直接数字频率合成DDS
- Service Worker,Web Worker,WebSocket的对比
Service Worker 处理网络请求的后台服务.适用于离线和后台同步数据或推送信息.不能直接和dom交互.通过postMessage方法交互. Web Worker 模拟多线程,允许复杂计算功能 ...
- 全网最详细!搭建Hexo+Coding/Gitee,实现一键生成,同步部署
全网最全小白搭建Hexo+Gitee/Coding/Github 全网最全小白搭建Hexo+Gitee/Coding/Github 本站内容已全部转移到https://www.myyuns.ltd,具 ...
- 对C#面向对象三大特性的一点总结
一.三大特性 封装: 把客观事物封装成类,并把类内部的实现隐藏,以保证数据的完整性 继承:通过继承可以复用父类的代码 多态:允许将子对象赋值给父对象的一种能力 二.[封装]特性 把类内部的数据隐藏,不 ...
- springboot10(docker)
一 Docker 1 what's the Docker? Docker是一个开源的应用容器引擎,轻量级容器技术. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器 ...
|