一.JavaScript概述:
ECMAScript和JavaScript的关系:前者是后者的规格,后者是前者的一种体现.
注意: ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:1.核心(ECMAScript) 2.文档对象类型(DOM) Document object model (整合js,css,html)
3.浏览器对象类型(BOM) Broswer object model(整合js和浏览器)
简单的说, ECMAScript 描述了JavaScript语言本身的相关内容。
JavaScript是脚本语言,是一种轻量级的编程语言,是可插入HTML页面的编程代码,插入HTML页面后,可有所有的现代浏览器执行.
ES6就是指ECMAScript6
二.JavaScript的引入方式
1.Script标签内下代码: <script>js代码</script>
2.引入JS文件:<script src=’myscript.js’></script>
三.语言规范
1注释:// 单行注释 /* 多行注释*/
2.结束符: 在JavaScript中的语句要以分号 ; 为结束符
四.语言基础
1.变量:变量名由数字,字母,_,$组成,不能以数字开头.
2.声明变量使用var 变量名的格式来进行声明
var name=’alex’
var age=18
注意:变量名是区分大小写的.
推荐使用驼峰体命名规则.
保留字不能用做变量名.
补充:ES6新增let用于声明变量,用法类似于var,但所声明的变量只在let命令所在的代码块内有效,如:for (let i=0;i<arr.length;i++){..}
ES6新增const用来声明常量,一旦声明,其值就不能改变.改变就会报错
const PI = 3.1415;
四.数据类型
1.拥有动态类型
var x; 此时x是undefined
var x = 1; 此时x是数字 即按照最后声明的决定类型
2.数值(Number)
1.JavaScript声明的时候不区分整型和浮点型,就是一种数字类型;
var a=12.12 var b = 1212
2.NaN:表示不是一个数字,但是数字类型
3.常用方法:
parseInt("123"); //返回123
parseInt("ABV"); //返回NaN
parseInt(123.123) //返回123
parseFloat(123.123) //返回123.123
3.字符串(String)
1.字符串拼接:+
var a = “hello”
var b=’world’
var c = a + b
console.log(c) ; //得到helloworld
注意在js中,加法有任意一个是字符串,其他的数字都会转换为字符串
可以在加法中加入减法转换成数字,也可以使用parsrInt转换成数字
2.字符串常用方法:
方法 |
说明 |
.length |
返回长度 |
.trim() |
移除空白 |
.trimLeft() |
移除左边的空白 |
.trimRight() |
移除右边的空白 |
.charAt(n) |
返回第n个字符 |
.concat(value, ...) |
拼接 |
.indexOf(substring, start) |
子序列位置(start开始找的位置) |
.substring(from, to) |
根据索引获取子序列 |
.slice(start, end) |
切片 |
.toLowerCase() |
小写 |
.toUpperCase() |
大写 |
.split(delimiter, limit) |
分割 |
3..slice 和.substring的区别:
相同点: 如果start和end相等,返回空字符串
如果正着取,取值都一样,没有end参数的话,取到末尾
如果参数超过字符串实际长度,这个参数会被替换为string的长度
不同点:substring
如果start>end, start和stop将会被交换
如果参数小于0,或不是数字,将会被0替换
slice:
如果 start>end 不会被交换,倒着取
如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符)
如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)
4.布尔值(Boolean)
区别于python,true和false都是小写
注:空字符 ull 0 undefinedNaN都是flase
5.null 和 undefined
null 表示值是空,一般是需要指定或清空一个变量时才会使用,如name = null
undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。
解释:null表示变量的值是空,undefined则表示只声明了变量,但还没有赋值
6.对象(Object)
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。avaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型
1数组: 使用单独的变量名来存储一系列的值。类似于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() |
返回一个数组元素调用函数处理后的值的新数组 |
sort()注意: 如果没有参数则会按照字母顺序进行排序,即字符编码排序,和python不一样.如果想按照其他标准排序,需要比较函数, 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 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)
splice():
参数:splice(index,howmany,item,…)
Index:根据索引值,判断从何处删除/添加元素
Howmany:删除多少个元素
Item….要添加到数组的新元素 可不写
7.格式化:
var name=’alex’;
var s=`我叫${name}`;
console.log(s)
五.类型查询:typeof
typeof是一个一元运算符,不是一个函数,也不是语句
typeof ‘abc’ //返回string
typeof null // "object"
typeof true // "boolean"
typeof 123 // "number"
会返回的值类型:undefined Boolean number string object
六 运算符
1 算数运算符
+ - * / % ++ --
2.比较运算符
> >= < <= != == === !==
说明: == 例:1==’1’ 返回true 将字符串转换成数字类型,比较值
1===’1’ 返回false 强等于,既比较类型,又比较值
3.逻辑运算符
&& 与and || 或or !非
七.流程控制:
1.If-else: 判断语句
If-else if-else
与python区别在于 python中是elif js中是else if
2.switch
var day = new Date().getDay();
switch (day) {
case 0:
console.log("Sunday");
break;
case 1:
console.log("Monday");
break;
default:
console.log("...")
}
注意:switch 中的case子句通常都会加break语句,否则程序会继续执行后续case中的语句
3.for
for (var i=0;i<10;i++) {
console.log(i);
}
数组遍历:
var lst=[11,22,33,44,55]
for(var i=0;i<lst.length;i++){
console.log(lst[i])
}
4.while
var i = 0;
while (i < 10) {
console.log(i);
i++;
}
5.三元运算
var a = 1;
var b = 2;
var c = a > b ? a : b