JavaScript基础知识
# 概述:
# ES6就是指ECMAScript 6
一个完整的JavaScript实现是由以下三个不同部分组成:
1. 核心(ECMAScript)
2. 文档对象模型(DOM) Document object model(整合js,css,html)
3. 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
# 引入方式:
1. Script标签内写代码
/* <script> 在这里写代码 </script> */
2. 引入额外的JS文件
/* <script src="js文件地址"></script> */
# JaveScript语言规范
1. 注释
// 这个是单行注释
/*这个是多行注释*/
2. 结束符
以 ; 为结束符
JavaScript语言基础
# 变量声明-var
1. JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头.
2. 声明变量使用 var 变量名; 的格式来进行声明.
eg: var name = "Cheer";
@注意:
1. 变量名是区分大小写的.
2. 推荐使用驼峰体
3. 保留字不能用作变量名
# let - for循环很适用
1.声明的变量只在let命令所在的代码块内有效,所以for循环很适用
eg: for (let i=0,i<10,i++){...}
# const
1.一旦声明,其值就不可以改变
JavaScript数据类型
# JavaScript拥有动态效果
也就是可以往一个变量名上面赋多次不同类型的值.
# 数值(Number)
1. JavaScript不区分浮点型和整型,就只有一种数据类型.
2. 还有一种 NaN,标识不是一个数字.
eg: parseInt('123') --> 如果是数值就会返回正确的数值
parseInt('abc') --> 这个本身不是数值,所以返回 NaN
# 字符串(String)
var a='hello';
var b='word';
var c=a+b;
console.log(c) --> helloword
# 常用方法
1. .length--返回长度 --> 类似于python的 len
2. .trim()--移除空白 --> 类似于python的 strip()
3. .charAt(n)--返回第n个字符 --> 类似于python的字符串索引取值
4. .concat(value,...)--拼接 --> 类似于python的"".join()
字符串和数值不可以拼接
5. .indexOf(substring,start)--子序列位置 --> 类似于python的index()
找不到是-1
6. .substring(from,end)--根据索引获取子序列 --> 类似于python中根据索引取值
7. .slice--切片 --> 类似于python中的中括号切片
8. .toLowerCase--小写 --> 类似于python中的lower()转化为小写
9. .toUpperCase--大写 --> 类似于python中的upper()转化为大写
10. .split(delimiter,limit)--分割--> 类似于python中的split()以什么分割
delimiter:以什么分割
limit:分割几次
# string.slice(start, stop)和string.substring(start, stop):
1.两者的相同点:
如果start等于end,返回空字符串
如果stop参数省略,则取到字符串末
如果某个参数超过string的长度,这个参数会被替换为string的长度
2.substirng()的特点:
如果 start > stop ,start和stop将被交换
如果参数是负数或者不是数字,将会被0替换
3.silce()的特点:
如果 start > stop 不会交换两者
如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符)
如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)
slice和substring的区别
# 反引号+$ 格式化输出
var a='xc';
`你好! ${a}` ==> 你好! xc
# 布尔值(Boolean)
1. 不同于python的是,true 和 false 都是小写.
2. "",0,null,undefined,NaN 都是 false.
# null 和 undefined
1. null 表示值为空,一般在需要指定或清空一个变量时才使用,如 name=null;
2. undefined 表示当声明一个变量但是没有初始化的时候,该变量的默认值是 undefined .还有就是函数没有明确返回值的时候,返回的也是 undefined
3. null 是自己给的,undefined 只是声明了,但是却没有赋值.
# 对象(Object)
JavaScript中的所有事物都是对象: 字符串,数值,数组,函数...此外,JavaScript允许自定义对象.
JavaScript提供多个内建对象,比如String,Date,Array等等.
# 数组
数组对象的作用是:使用单独的变量名来存储一些列的值.类似于python中的列表.
eg: var a=[123,'asd'];
console.log(a[1]); ==> 'asd'
# 常用方法
1 .length 数组的大小
2 .push(ele) 尾部追加元素
3 .pop() 获取尾部的元素
4 .unshift(ele) 头部插入元素
5 .shift() 头部移除元素
6 .slice(start, end) 切片
7 .reverse() 反转
8 .join(seq) 将数组元素连接成字符串
9 .concat(val, ...) 连接数组
10 .sort() 排序
11 .forEach() 将数组的每个元素传递给回调函数 --> 配合 function(currentValue, index, arr) 一起使用,这个类似于python中的 lambda 匿名函数.
12 .splice() 删除元素,并向数组添加新元素。 --> 不可以是字符串,只可以是数组的替换.
13 .map() 返回一个数组元素调用函数处理后的值的新数组 --> 配合 function(currentValue, index, arr) 一起使用,这个类似于python中的 lambda 匿名函数.
# 新的原始的数据类型(Symbol)
表示独一无二的值 ,他是JavaScript语言的第七种数据类型
# 类型查询
使用 typeof 查询类型
但是 typeof 是一个元运算符,类似于(++,--,!,-等一元运算符),不是一个函数,也不是一个语句
对变量或值调用 typeof 运算符将返回下列值之一:
1. undefined - 如果变量是 Undefined 类型的
2. boolean - 如果变量是 Boolean 类型的
3. number - 如果变量是 Number 类型的
4. string - 如果变量是 String 类型的
5. object - 如果变量是一种引用类型或 Null 类型的
运算符
/*只写特殊的*/
# 算数运算符
eg: var x=10;
var y=x++;
var z=++x;
x++: 先把x的值赋值给y,x再进行加1运算
++x: 先进性加1运算,最终的值赋给z
# 比较运算符
> >= < <= != == === !==
"===":强制等于,js是一门弱语言.双等于只判断值是否相同,不判断类型
# 逻辑运算符
1. && 与
2. || 或
3. ! 非
# 赋值运算符
= += -= *= /=
流程控制
# if - else
if (条件){
代码
}else{
代码
}
# if - else if - else
if (条件){
代码
}else if (条件){
代码
}else {
代码
}
# switch
switch (值){
case 条件:
代码
break
case 条件:
代码
.
.
.
default:
代码
}
# for
for (i=0;i<10;i++) {
代码
}
# while
while (条件) {
代码
}
# 三元运算
var a=1;
var b=2;
var c=a>b ? a:b
判断a是否大于b,如果成立把a赋值给c,如果不成立把b赋值给c
函数
# 格式
function 函数名(条件) {
代码块
}
# 格式-补充
var f = v => v;
等同于: var f=function(v) {
return v; }
# 函数中的arguments参数
函数只能返回一个值,如果要返回多个值,只能放进数组对象中返回.
arguments 相当于取到了所有的参数
# 函数的全局变量和局部变量
与python是换了层皮
# 作用域
与python一模一样
词法分析
js中在调用函数的那一瞬间,会先进性词法分析
过程:
- 函数参数
- 函数的局部变量
- 函数声明
内置对象和方法(里面有json串)
js也是所有事物都是对象
# 重点提一下JSON对象
var str1 = '{"name": "Alex", "age": 18}';
var obj1 = {"name": "Alex", "age": 18};
// JSON字符串转换成对象
var obj = JSON.parse(str1);
// 对象转换成JSON字符串
var str = JSON.stringify(obj1);