一,简单地说:ECMAScript 描述了JavaScript语言本身的相关内容。
JavaScript 是脚本语言,
是一种轻量级的编程语言。
是可插入 HTML 页面的编程代码。
插入 HTML 页面后,可由所有的现代浏览器执行。
一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:
核心(ECMAScript)
文档对象模型(DOM) Document object model (整合js,css,html)
浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
二,引入方式: (1) <script> 某某代码 </script> 中间代码段就能编写代码
(2)<script src="xx.js"></script> 将代码和骨架分开,引入js文件
语言规范: // 某某代码 ==>这是单行注释
/*某某代码*/ ==>这是多行注释
注意任何语法的末尾必须要用分号
声明变量问题: javascript的变量名可以使用数字 ,字母, 下划线, $,组成,但是不能用数字开头
声明变量 1,使用 var加空格加变量名 的格式, 如: var name = "alex" ;
2, const用来声明常量,一旦声明就你不能更改
3,let命令,注意所声明 的变量只在let命令所在的代码块内有效 如: for (let i=0;i<s.length;i++){...}
需要注意的问题: 变量命要去分大小写的 推荐使用驼峰体的命名规则 语言发展预留的关键字不能用作关键字
保留字查询列表:
abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile 保留字列表
三,数据类型:
动态数据类型: 如: var num; var num = 1; var num = 'a';
数值(Number); 注意它不分 int 和 float 类型 NUN是数值类型,但不是数字
如: parseInt('123') ===>返回123 parseInt('abs') ===>返回NUN parseFloat(123.66) ===>返回123.66
字符串(String): var s1 = 'alex is nb' 注意字符串是不了变类型,不能对原数据进行修改
s1.length ===>返回字符串的长度
s1.trim() ===>取出字符串两边的空白 s1.strimLeft() ===>取出左边的空白 s1.strimRight() ===>取出右边的空白
s1.charAt(6) ===>括号里是索引 返回该字符串索引6的元素
s1.indexOf('ale') ===>返回该元素在字符串中的起始位置
s1.indexOf('alex',2) ===>从索引位置2开始查元素alex的起始索引 查到返回该元素.查不到则返回-1
s1.substring(from, to) ===> 根据索引获取子序列,括号内不存在负数,会自动升序查找,若存在负数则从零查找
s1.slice(2,6) ===> 切片和列表类似,顾头不顾尾,超出索引会直接取到末尾,不会报错
s1.toLowerCase() ===> 将字符串小写 s1.toUpperCase() ===>将字符串大写
s1.concat(66,'99') ===>跟字符串不一样,它可以将字符串和数字都能拼接
s1.split(切割符, 数字) ====> 切割符表示用什么切割, 会形成列表 数字表示取值个数,默认从左向右取值,不写数字或者数字超出索引,都将所有内容返回
字符串的拼接加好拼接就行 var a = 'gao' var b = 'nb' var c = a + b console.log(c) ====>'gaonb'
字符串的格式化; 1,要有要添加的已定义好的变量
2,要用固定的 ${变量名} 的格式放在要替代的位置
3,注意字符串整个字符串要用反引号 ===> ( ` ) 标识,可用于多行
如: var name = 'alex'; var time = 'today'
var c = `hello ${name}, how are you ${time}` console.log(c)
布尔值: 区别于python, true和false都是小写
'''(空字符串),0,null,undefined,NaN 都是false
null ===> 表示变量的值是空的, undefined ===> 表示声明变量,没有赋值,函数没有返回值也是null,相当于python中的None
对象Object 对象只是带有属性和方法的特殊数据类型
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
字符串,数值,数组,函数 等所有的事物都是对象
数组(列表) 类似于python中的列表 如: var a = [123,'abc']; console.log(a[1]); ===>'abc'
a1.lenth ====>表示数组的长度
a1.push(某个元素) ===> 数组的末尾追加元素 类似于append 操作原列表
a1.pop() ===>删除尾部的元素, 操作原列表
a1.unshift(某个元素) ===> 头部插入元素, 操作原列表
a1.shift (某个元素) ===> 头部移除元素 操作原列表
a1.slice(a,b) ===> 索引从a切到b,顾头不顾尾,超出索引不会报错 生成新的列表,不改变原列表
a1.reverse() ===>将列表反转 操作原列表
a1.join('/') ===> 将数组每个元素加上sep链接成字符串 生成新字符串,不改变原列表
a1.concat(某元素或可迭代对象) ===> 将元素加入原列表的末尾,或者元素迭代加入列表 生成新的列表,不改变原列表
a1.splice(a,b,c...) ==> 删除并替换 c...元素 a,b是必填数字, a表示从什么位置开始删除,b表示删除多少个数 ,c..表示添加这些元素 a1.sort() ==>注意若括号内没有参数,会按照字符编码的顺序进行排序,而且要先转换成字符串
注意:可以加入比较函数
for循环遍历数组中的元素: 如; var a = [11,22,33,55] for (var i =0);i<a.length;i++) {console.log(i);}
类型查询(typeof) 这里记住一些常见类型就行:
undefined - 如果变量是 Undefined 类型的 number - 如果变量是 Number 类型的
boolean - 如果变量是 Boolean 类型的 string - 如果变量是 String 类型的
object - 如果变量是一种引用类型或 Null 类型的
运算符: + - * / % -- ++ 注意:++表示 一次加1 --表示一次减1
> >= < <= != == === !== 注意: == 和 != 仅判断值是否相等,不判断类型 === 和 !== 既判断值也判断类型是否相等
&& || ! 注意: && 表示与(and) || 表示或(or) ! 表示快速把变量转换成布尔值
四, if 和 while 条件和循环,
#这些流程的关键字, 后面要加(),括号里面是条件 {}花括号里面是执行的结果 #if 和else if var a = 10; if (a < 6) { console.log('比6小'); }else if (a > 6) { console.log('比6大'); }else { console,log('一般大'); } #if 和 else var a = 10; if (a < 6) { console.log('比6小'); } else if (a > 6) { console.log('比6大'); } else { console, log('一般大'); } #switch 注意 case后面要用冒号 语句跳出结束要用break跳出循环 var a = 2; switch (a) { case 0: console.log('猜小了'); break; case 1: console.log('猜小了'); break; case 2: console.log('猜对了'); break; } #for 循环的简单用法: for (var i=0;i<10;i++) { console.log(i); } # while 循环的简单用法 var a = 10; while (a > 0) { console.log(a) a -= 1 } #三元运算 var a = 4; var b = 6; var c = a b ? a:b #注意要用值接一下,a 和 b 谁大? 若a大,则值为a 否则值为 b
五,函数 若是 返回值为空则显示undefined
普通函数 ====> function foo() {函数体} #与pthon比较多了个{ },定义函数的关键字也变成function,返回值也用return返回
带参数函数 ====> function foo(a,b) {函数体}
匿名函数 ===> var c = function(a,b) {函数体; return a + b} #说白了就是声明一个变量,用不带函数名的函数来赋值给变量
立即执行函数 ===> ( function(a,b) {函数体; return a+b} )(1,2) #理解:就是将一个匿名函数用括号扩起来,然后调用传参,
补充:ES6中允许使用 "=>" 这个符号定义函数;
如; 匿名函数中无参数: var f = function () {return 5;} ====> var f = () => 5 #简化代码,省了function和return,当然也省掉了花括号
有一个参数: var f = function (v) {return v;} ====> var f = v => v
多个参数: var f = function (a,b){return a+b} ===> var f = (a,b) => a+b
函数常用辅助知识点:
1, arguments这个对象,多用于在函数的内部接受多个参数,通过 arguments.length 属性能得到参数的长度,
内置的对象方法返回值是个列表,可以通过索引取值, 注意:列表最后一位不是参数值
2,局部和全局变量问题;
全局变量:从声明开始,全网页的所有脚本和函数都能访问