4.28 递归 数组 对象
Posted xiaokeai233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.28 递归 数组 对象相关的知识,希望对你有一定的参考价值。
# 一、JS的编译和执行
- 偏原理
- 可以不懂原理,只需要注意现象,可以正常写代码
- 懂原理,帮助你提升代码性能,优化;方便面试
- js是一门解释性语言
- 预先编译,再执行
- 先通读全文,在解释含义
- 找到var和function,做出对应提升
- 编译时
- **提升**
- 执行时
- 按照逻辑,结构正常执行
- 偏原理
- 可以不懂原理,只需要注意现象,可以正常写代码
- 懂原理,帮助你提升代码性能,优化;方便面试
- js是一门解释性语言
- 预先编译,再执行
- 先通读全文,在解释含义
- 找到var和function,做出对应提升
- 编译时
- **提升**
- 执行时
- 按照逻辑,结构正常执行
## 变量和函数会提升
- var的提升
- 提前声明,=号的位置赋值
```js
console.log(a); // undefined
var a = 10;
console.log(a); // 10
```
- ↑↑↑↑等价于↓↓↓↓
```js
var a;
console.log(a); // undefined
a = 10;
console.log(a); // 10
```
- function的函数提升
- 整体提升
- 即提前声明,有提前赋值
- 如果var遇到function
1. 赋值式创建函数 ********
```js
var fn = fucntion(){}
```
- 提升的是var,不是function
2. 变量和函数重名
```js
var a = "hello";
function a(){}
```
- var提升的更高,所以function占便宜,生效的是function
- var的提升
- 提前声明,=号的位置赋值
```js
console.log(a); // undefined
var a = 10;
console.log(a); // 10
```
- ↑↑↑↑等价于↓↓↓↓
```js
var a;
console.log(a); // undefined
a = 10;
console.log(a); // 10
```
- function的函数提升
- 整体提升
- 即提前声明,有提前赋值
- 如果var遇到function
1. 赋值式创建函数 ********
```js
var fn = fucntion(){}
```
- 提升的是var,不是function
2. 变量和函数重名
```js
var a = "hello";
function a(){}
```
- var提升的更高,所以function占便宜,生效的是function
# 二、函数的高级应用-递归
- 在函数内部执行自己
- 递归就是函数自己调用自己
- 递归类似于循环
- 递归函数要注意停止/返回,否则会造成死递归
- 递归比较消耗性能,尽量少用
- 在函数内部执行自己
- 递归就是函数自己调用自己
- 递归类似于循环
- 递归函数要注意停止/返回,否则会造成死递归
- 递归比较消耗性能,尽量少用
# 三、对象的介绍
## 1. 什么是对象
- 其实就是一种**事物的描述**,在程序中对象是一种数据类型
- 描述水杯:
- 材质:塑料
- 容量:1000ml
- 颜色:白色
- 形状:圆形
- 功能:容器
- 把以上信息,组合打包用来表示一件事物,之后,就叫对象
- 程序中的对象主要用来:存储信息
## 2. 如何得到对象(创建对象)
- 字面量
```js
var o1 = {}
```
- 构造函数
```js
var o2 = new Object();
```
## 3. 对象的意义和本质
- 意义(功能)
- 存储数据(信息)
- 编程(面向对象编程)
- 本质
- 键值对
- 字面量
```js
var o1 = {}
```
- 构造函数
```js
var o2 = new Object();
```
## 3. 对象的意义和本质
- 意义(功能)
- 存储数据(信息)
- 编程(面向对象编程)
- 本质
- 键值对
## 4. 对象的操作
- 点语法(.)
- 对象.属性名
```js
var o = {};
```
- 读
```js
console.log(o.name);
```
- 写
```js
o.name = "Admin";
o.age = 18;
o.sex = "男";
o.sayHello = function(){
console.log("你好,我叫:" + obj.name);
}
```
- 字面量创建对象时,可以很方便的立即写入初始属性
```js
var obj = {
name: "Admin",
age: 18,
sex: "男",
sayHello:function(){
console.log("你好,我叫:" + obj.name);
}
};
```
- 点语法(.)
- 对象.属性名
```js
var o = {};
```
- 读
```js
console.log(o.name);
```
- 写
```js
o.name = "Admin";
o.age = 18;
o.sex = "男";
o.sayHello = function(){
console.log("你好,我叫:" + obj.name);
}
```
- 字面量创建对象时,可以很方便的立即写入初始属性
```js
var obj = {
name: "Admin",
age: 18,
sex: "男",
sayHello:function(){
console.log("你好,我叫:" + obj.name);
}
};
```
- 注意:**任何两个对象都不相等**
- 如果相等了,意味着就是一个对象
- 如果相等了,意味着就是一个对象
# 四、数组的介绍
## 1. 什么是数组?
- 数据的组合,一组数据
- 当需要操作多个数据时,可以给数据打包,数组
- 数组其实也是对象,只是存储数据的形式不一样,但是类型是一样的
## 2. 如何得到数组(创建数组)
- 字面量
```js
var arr1 = [];
```
- 构造函数
```js
var arr2 = new Array();
```
- 区别
- 当字面量内只有一个数值型数据时,表示一个数据
- 当构造函数内只有一个数值型数据时,表示长度
- 注意区别,按需选择
以上是关于4.28 递归 数组 对象的主要内容,如果未能解决你的问题,请参考以下文章