ES6就是指的ECMAScriptECMAScript是Javascript的一个重要标准,但它并不是 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 很容易学习。
Script标签内写代码
<script>//在这里面写JS代码</script>
引入额外的JS
文件
<script src="myscript.js"></script>
// 单行注释 /* 多行注释*/
结束符
JavaScript中的语句要以分号(;)为结束符
变量声明
var name = "Alex";var age = 18;
注意:
? 变量名是区分大小写的。
? 推荐使用驼峰式命名规则。
? 保留字(关键字)不能用做变量名。
补充:
? ==ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。例如:for 循环的计数器就很适合使用let命令。==
var=['a','b','c','d']for (let i=0; i<arr.length; i++){console.log(i)}i'''会报错i is not definedat <anonymous>:1:1'''但是for (var i=0; i<arr.length; i++){console.log(i)}i"""不会报错,输出4"""
==ES6
新增const
用来声明常量,一旦声明,其值就不能改变。==
const PI = 3.1415;PI //3.1415PI = 3 //TypeError: "PI" is read-only
==再次补充 (常见的保留字)==
abstractbooleanbytecharclassconstdebuggerdoubleenumexportextendsfinalfloatgotoimplementsimportintinterfacelongnativepackageprivateprotectedpublicshortstaticsupersynchronizedthrowstransientvolatile
数据类型
js
拥有动态类型(就是说类型可以根据需要作出变化,而不是一旦定义就不能修改了)var x;//此时x是undefined var x=1;//此时x是数字var x="Alex"//此时x是字符串
js 不区分整型和浮点型,就只有一种数字类型。var a = 12.34;var b = 20;var c = 123e5; // 12300000var d = 123e-5; // 0.00123还有一种NaN,表示不是一个数字(not a number)常用方法:parseInt('123') //返回123paeseInt('ABC') //返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。parseFloat("123.456") //返回123.456
var a = "Hello";var b = "world";var c = a + b;console.log(c); //得到Helloworld## 常用方法.length(返回长度).trim/trimLeft/trimRight(移除空白/左边空白/右边空白).charAt(n)(返回第n个字符).concat(value...)(拼接).indexOf(substring,start)(子序列位置).substring(from, to)(根据索引获取子序列).slice(start,end)(切片).toLowerCase()(小写).toUpperCase()(大写).split(delimiter, limit)(分割)## 拼接字符串一般使用“+”string.slice(start, stop)和string.substring(start, stop)两者的相同点:如果start等于end,返回空字符串如果stop参数省略,则取到字符串末如果某个参数超过string的长度,这个参数会被替换为string的长度substirng()的特点:如果 start > stop ,start和stop将被交换如果参数是负数或者不是数字,将会被0替换silce()的特点:如果 start > stop 不会交换两者如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符)如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)
补充:
? ES6中引入了模板字符串。模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
// 普通字符串`这是普通字符串!`// 多行文本`这是多行的文本`// 字符串中嵌入变量var name = "cxw",time = "today";`Hello ${name}, how are you ${time}?`
注意:
? 如果模板字符串中需要使用反引号,则在其前面要用反斜杠转义。
JSHint
启用ES6
语法支持:/\* jshint esversion: 6 \*/
## 区别于Python,true和false都是小写。var a = true;var b = false;## 空字符串、0、null、undefined、NaN都是false## null和undefined null表示值为空,一般需要指定或清空一个变量时才会使用,如name=null ; underfined表示当声明一个变量但未初始化时,该变量的默认值是underfined ;
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。JavaScript 提供多个内建对象,比如 String、Date、Array 等等。对象只是带有属性和方法的特殊数据类型。
## 数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表var a = [123, "ABC"];console.log(a[1]);//输出“ABC”## 常用方法.length 数组的大小.push(ele) 尾部追加元素.pop() 获取尾部的元素.unshift(ele) 头部插入元素.shift() 头部移除元素.slice(start, end) 切片.reverse() 反转.join(seq) 将数组元素连接成字符串.concat(val, ...) 连接数组.sort() 排序.forEach() 将数组的每个元素传递给回调函数.splice() 删除元素,并向数组添加新元素。.map() 返回一个数组元素调用函数处理后的值的新数组
forEach()
## 语法:forEach(function(currentValue, index, arr), thisValue)currentValue:必须,当前元素。index: 可选。arr: 可选。当前元素所属的数组对象。thisValue:可选。传递给函数的值一般用"this"值。如果这个参数为空,"undefined"会传递给"this"值。var arr1 = [11, 22, 33, 44];arr1.forEach(value, index, arr){console.log(value, index, arr)}'''11 0 (4)?[11, 22, 33, 44]22 1 (4)?[11, 22, 33, 44]33 2 (4)?[11, 22, 33, 44]44 3 (4)?[11, 22, 33, 44]'''arr1.forEach(function(value, index){console.log(index, value)})'''0 111 222 333 44'''
#语法splice(index, howmany, item1,...,itemX)#参数index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。howmany 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。item1, ..., itemX 可选。要添加到数组的新元素 var arr1 = [11, 22, 33, 44];undefinedarr1.splice(1, 3)(3)?[22, 33, 44]arr1.splice(1, 3, 55)[]arr1.splice(1, 55)[55]arr1.splice(1, 3, 55)[]arr1.splice(2, 55)[]arr1.splice(2,3,47)[]arr1;(3)?[11, 55, 47]
## 语法map(function(currentValue,index,arr), thisValue)## 参数及其描述currentValue 必须。当前元素的值index 可选。当期元素的索引值arr 可选。当期元素属于的数组对象thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"var arr1 = [11, 22, 33, 44];undefinedarr1.map(function(value, index){return value+1})(4)?[12, 23, 34, 45]arr1(4)?[11, 22, 33, 44]## 注意关于sort()需要注意:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。function sortNumber(a,b){ return a - b}var arr1 = [11, 100, 22, 55, 33, 44]arr1.sort(sortNumber)'''function sortNumber(a,b){ return a - b #小于0}var arr1 = [11, 100, 22, 55, 33, 44]arr1.sort(sortNumber)(6)?[11, 22, 33, 44, 55, 100]function sortNumber(a,b){ return b - a #大于0}var arr1 = [11, 100, 22, 55, 33, 44]arr1.sort(sortNumber)(6)?[100, 55, 44, 33, 22, 11]'''##补充ES6新引入了一种新的原始数据类型(Symbol),表示独一无二的值。它是JavaScript语言的第7种数据类型。typeof "abc" // "string"typeof null // "object"typeof true // "boolean"typeof 123 // "number"
运算符
流程控制
函数
词法分析
内置对象和方法