首页 > 代码库 > day14

day14

# <center>总结</center>

### <center>函数的作用域

**概念**:函数内部定义的变量只有在函数的内部使用。

**作用域链**

如果函数里面没有定义变量,浏览器会向它的上一级寻找里面的有相同定义的变量;
```javascript
function fn () {
  a=20;
}
```
#### **说明**:

函数提升只有把函数定义的时机,放到当前作用域的开头。在JS当中只有函数才会产生作用域;ifwhile、for都不会产生作用域

#### **变量提升**1.在申明变量的时候,会把当前变量申明的时机放到当前作用域的开头。

2.只有变量申明才有提升,变量的赋值没有提升。
## <center>object(对象)

**与数组的区别**:

存的东西是无序的,而数组存的东西是有序的;

**创建对象的表达式**

```javascript
var obj = {
name(属性名): ‘Bob‘(数据值),
age:20,
};
取对象属性的两种方式:点和方括号
1.console.log(obj.name);
2.console.log(obj[‘name‘]);
```
### **区别**1.点会把点后面的名称直接作为属性名,而方括号会把方括号里面的返回值作为属性名;

2.对于一些特殊的属性名,比如使用数字开头,或者属性名中间出现了一些符号,这些属性只能通过方括号来取。

3.优先使用点,来取对象。
## 构建数组的方式 ##
1. 数组的字面量:var arr = [1,2,3];
2. new Array(length(数组长度));
3. new Array(element0, element1, ..., elementn);

## <center>Array对象方法 ##

### 数组字面量

```javascript
var arr = [1, 2, 3];

var arr = new Array();
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
console.log(arr);

var arr = new Array(5);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

arr[5] = 6;
console.log(arr);
console.log(arr.length);

var arr = new Array(1, 2, 3);
console.log(arr);
console.log(arr.length);

```
**concat() :连接两个或更多的数组,并返回结果。**

```javascript
var arr = [1, 2, 3];
var arr2 = [10, 20];
var arr3 = [‘hello‘, ‘js‘];

var result = arr.concat(arr2, arr3);

console.log(arr);
console.log(result);

console.log(arr.push);
```
**join() :把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。**

```javascript
var arr = [1, 2, 3, ‘hello‘];

var result = arr.join(‘‘);
console.log(arr);
console.log(result);
```
**pop() :删除并返回数组的最后一个元素**

```javascript
var arr = [1, 2, 3, ‘hello‘];

var result = arr.pop();
console.log(arr);
console.log(result);
```
**shift() :删除并返回数组的第一个元素**

```javascript

```
**push() :向数组的末尾添加一个或更多元素,并返回新的长度**

```javascript
var arr = [1, 2, 3, ‘hello‘];
var arr2 = [‘hello‘, ‘js‘]

var result = arr.push(arr2);
console.log(arr);
console.log(result);
```
**reverse() :颠倒数组中元素的顺序**

```javascript
var arr = [1, 2, 3, ‘hello‘];

var result = arr.reverse();
console.log(arr);
console.log(result);
```
**slice() :从某个已有的数组返回选定的元素 slice(2,-2)**

```javascript
var arr = [1, 2, 3, ‘hello‘, 4, 5, ‘js‘];

console.log(arr[-2]);

var result = arr.slice(2, -2);
console.log(arr);
console.log(result);
```
**sort() :对数组的元素进行排序(从小到大排序)**

```javascript
var arr = [23, 1, 300, 7, 4];

// 定义排序规则的函数
function rule(a, b) {
  if(a < b) {
    // 如果要让a出现在b的前面,返回小于0的数
    return -1;
  } else {
    // 如果要让b出现在a的前面,返回大于0的数
    return 1;
  }
  return a - b;
  return b - a;

  // 按照除以3之后的余数排序
  if(a % 3 > b % 3) {
    return -1;
  } else if(a % 3 === b % 3) {
    // 如果两个数的余数相等,就让大的数排在前面
    if(a > b) {
      return -1;
    } else {
      return 1;
    }
  } else {
    return 1;
  }
}

arr.sort(rule);

arr.sort(function(a, b) { return b - a; })

console.log(arr);

```

### 定义排序规则的函数
```javascript
function rule(a, b) {
  if(a < b) {
    // 如果要让a出现在b的前面,返回小于0的数
    return -1;
  } else {
    // 如果要让b出现在a的前面,返回大于0的数
    return 1;
  }
  return a - b;
  return b - a;

  //按照除以3之后的余数排序
  if(a % 3 > b % 3) {
    return -1;
  } else if(a % 3 === b % 3) {
    // 如果两个数的余数相等,就让大的数排在前面
    if(a > b) {
      return -1;
    } else {
      return 1;
    }
  } else {
    return 1;
  }
}

arr.sort(rule);

arr.sort(function(a, b) { return b - a; })

console.log(arr);
```
**splice() :删除元素,并向数组添加新元素**

```javascript

var arr = [23, 1, 300, 7, 4];

var result = arr.splice(3, 0, 100, 200);
console.log(arr.toString());
console.log(result);
```
**toSource() :返回该对象的源代码**

**toString() :把数组转换为字符串,并返回结果**

**toLocaleString() :把数组转换为本地字符串,并返回结果**

**unshift() :向数组的开头添加一个或更多元素,并返回新的长度**

**valueOf() :返回数组对象的原始值**

 

day14