1. 变量
只要声明变量 就是 重新开辟一个储存空间
值赋值
像数字 字符串 这种最基础的类型 直接对变量进行赋值
引用赋值
以变量的形式对其进行赋值
var a = 1;
var b = a;
将 数组 或 对象 给变量进行赋值
var arr = [1,2,3,4,5];
浅拷贝
var arr = [1,2,3,4,5];
var arr1 = arr;
深拷贝
var arr = [1,2,3,4,5];
var arr1 = [];
for(var i = 0;i<arr.length;i++){
arr1[i] = arr[i];
}
2. 基础数据类型
2.1 数字
0.1 + 0.2 = 0.3000000000004
JS 是一个弱类型语言 无法对二进制实现一个完美的数据类型
2.2 字符串
字符串的操作方法
+ 号 是 拼接号
`` 模板字符串 (${}变量的解析)
2.3 数组
数组操作方法
数组中 如果有元素被删 后面的元素 往前自助补位
数组排序方法
数组去重方法
2.4 对象
键值对的格式
键 字符串或者变量 遵循 命名规则
值 任意数据类型
循环遍历对象 使用 for ...in
2.5 布尔 Boolean 简写 bool
只有true 和 false
数字0 null undefined NaN false
除了这五个之外 所有的 都是 true
2.6 null
2.7 undefined
3. 运算符
算数运算符
字符串数字 可以直接进行 - * / 运算 所得结果是 数字
字符串数字 进行 + 运算的时候 直接是 字符串的拼接 而不是运算
关系运算符
< > <= >= == ===
if判断里面写的是 等于号 == 而不是赋值号 =
逻辑运算符
&& || !
4. 三目运算符
(判断条件)? 成立赋值:不成立赋值
5. 分支语句
if else || else if
switch case
switch (n){
case 值:
执行代码;
break; // 必须加
case 值:
执行代码;
break; // 必须加
default:
当所有case都没有匹配上 才执行
break;
}
6. 循环语句
for
for in
// for in循环
// 专门用来循环对象
var obj = {
name:'张三',
age:1,
sex:'男',
}
for(var val in obj){
// val 代表键名
console.log(val);
// obj[val] 代表值
console.log(obj[val]);
}
do while
while
7. 常用输出
document.write();
console.log();
alert();
标签.innerHTML
标签.innerText
8. 函数
函数的定义 和 调用
形参 函数定义时 写的参数
实参 函数调用时 写的参数
作用域 全局作用域 局部作用域
this 指向
函数自调用 或者 不借助 事件调用时 this 指向 window
函数被事件触发 时 this 指向 触发这个事件的 dom元素
return
终止一个函数
不管 return 后面还有没有代码 当程序进行到 return 都不再往下继续执行
当 return 后面 有值时 这个函数有返回值
值 可以是 数字 字符串 数组 对象 函数 布尔 等等
自调用
函数自己运行 可以创建一个 局部作用域
闭包
在外部函数内 定义一个内部函数
这个内部函数 会对 外部函数中声明的变量 进行操作
并在 外部函数的外面 去调用这个内部函数
所形成的闭合回路 叫 闭包
递归
在函数内部 调用自身函数 当其满足一定条件时 return
递归 必须有 return
标准案例: 去重 并保持原数组长度
回调函数
将函数作为一个参数 传递到另一个函数中
并在特定的时机 于另一个函数内调用这个函数
经典案例: 计时器 或 定时器