介绍
1996年11月,JavaScript的创造者—Netscape公司(已经倒闭),决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。
该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。
因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。
年份 | 名称 | 描述 |
---|---|---|
1997 | ECMAScript 1 | 第一个版本 |
1998 | ECMAScript 2 | 版本变更 |
1999 | ECMAScript 3 | 添加正则表达式添加try/catch |
ECMAScript 4 | 没有发布 | |
2009 | ECMAScript 5 | 添加"strict mode"严格模式添加JSON支持 |
2011 | ECMAScript 5.1 | 版本变更 |
2015 | ECMAScript 6 | 添加类和模块。 ES6 |
2016 | ECMAScript 7 | 增加指数运算符(**)增加Array.prototype.includes |
一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:
- 核心(ECMAScript)
- 文档对象模型(DOM) Document object model (整合js,css,html)
- 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
引入方式
script标签内部写代码
<script>
// 这里写代码
</script>
引入外部代码
<script src="/js/myscript.js"></script> <!-- 一般放在body内容结束为止 -->
注释
单行注释
// 单行注释
多行注释
/*
多行注释
*/
变量
声明变量
var // 全局作用域
let // 局部作用域 ec6新添加的
代码块
命名规范
字母 数字 下划线 $
不能用数字开头 不能与关键字冲突
区分大小写
驼峰体 userName
var band;
var a, b, c, d;
var band = "beyond";
var name="jane", age = 19;
// 变量声明不赋值 默认是unddefined
常量
声明
const pai = 3.14;
注意:常量一旦定义不能修改
数据类型
number数字类型
JavaScript不区分整型和浮点型,就只有一种数字类型
var a = 12.34;
var b = 20;
var c = 123e5; // 12300000
var d = 123e-5; // 0.00123
parseInt("123") // 转int类型 返回123
parseInt("ABC") // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456") // 转浮点数类型,返回123.456
NaN not a number,NaN是一个数值类型,表示当前转换的对象不是一个数值类型
string字符串类型
字符串连接 +
方法 | 说明 |
---|---|
.length | 取长度 |
.trim() | 去除左右空格 |
.trimLeft() | 去除左边空格 |
.trimRight() | 去除右边空格 |
.charAt(m) | 索引取值 |
.concat() | 拼接 |
.indexOf(‘x’) | 取字符的索引 |
.subString(0,3) | 截取字符,不支持负数 |
.slice(0,3) | 切片取值,支持负数(到着取)推荐使用 |
.toLowerCase() | 小写 |
.toUpperCase() | 大写 |
.split() | 分隔字符 第二个参数限制份数 返回的是数组 |
.replace() | 替换字符 |
.lastIndexOf(‘x’) | 取字符在字符串中的最后一个索引 |
String.subString(start, stop) 和 String.slice(start, stop) 的区别
两者的相同点:
如果start等于end,返回空字符串
如果stop参数省略,则取到字符串末
如果某个参数超过string的长度,这个参数会被替换为string的长度
substirng()的特点:
如果 start > stop ,start和stop将被交换
如果参数是负数或者不是数字,将会被0替换
silce()的特点:
如果 start > stop 不会交换两者
如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符)
如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)
多行文本
var name = `
bbababa
bababab
eeeee
`
格式化输出
var res = `
my name is ${name} my age is ${age}
`
// 用到的变量要事先定义好
转义
var res = `
my name is \${name}
`
// \ 即可转义
boolean布尔类型
true, false 默认全是小写
注意:""(空字符串)、0、null、undefined、NaN都是false。
null undefined
undefined == false
null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null
undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。
object对象
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数…此外,JavaScript 允许自定义对象。
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型。
array数组
数组 一系列的有顺序的数据
var a = [123, "ABC"];
xx[0] // 索引取值
xx[4] = 5 // 添加数据 前提要知道索引值
delete xx[1] // 删除指定索引的元素的值,不会删除元素本身,元素变为undefined 返回的是true和false
方法 | 说明 |
---|---|
.length | 数组的大小 |
.push(ele) | 尾部追加元素 |
.pop() | 从尾部删除元素,并返回元素 |
.unshift(ele) | 在头部插入元素 |
.shift() | 从头部移除元素,并返回元素 |
.slice(start, end) | 切片 |
.reverse() | 反转 |
.join() | 将数组连接成字符串 |
.concat() | 连接数组 |
.sort() | 排序 |
.forEach() | 将数组的每个元素传递给回调函数 |
.splice() | 删除元素,并向数组添加新元素。 |
.map() | 返回一个数组元素调用函数处理后的值的新数组 |
类型查询
typeof "abc" // "string"
typeof null // "object"
typeof true // "boolean"
typeof 123 // "number"
typeof是一个一元运算符(就像++,–,!,- 等一元运算符),不是一个函数,也不是一个语句。
对变量或值调用 typeof 运算符将返回下列值之一:
- undefined - 如果变量是 Undefined 类型的
- boolean - 如果变量是 Boolean 类型的
- number - 如果变量是 Number 类型的
- string - 如果变量是 String 类型的
- object - 如果变量是一种引用类型或 Null 类型的