js只对等号左边的进行变量提升

### 只对等号左边的进行变量提升
> =:赋值,左边是变量,右边都应该是值

```javascript
//之前
i%2 === 0?item.className = 'c1':item.className='c2';
//现在
item.className = i%2===0?'c1':'c2';
```


```javascript
//匿名函数:函数表达式(把函数当做一个值赋值给变量或者其它内容)
oDiv.onclick = function(){

}
//等同于oDiv.onclick == aaafff000
```

> 只对等号左边进行变量提升,右边是值,不会提前声明神明的
```javascript
//=>变量提升:var fn
//带var的只对等号左边的进行声明
console.log(fn);//=>undefined
var fn = function(){

};
console.log(fn);//=>函数本身
```

> 真实项目中,应用这个原理,我们创建函数的时候可以使用函数表达式的方式;
>1、因为只能对等号左边的进行提升,所以变量提升完成后,当前函数只是声明了,没有定义,想要执行函数(只能放在赋值的代码之后执行,放在前面执行相当于让undefined执行,会报错的)
>2、这样让我们的代码逻辑更加严谨,以后想要知道一个执行的函数做了什么功能,只需要向上查找定义的部分即可(不会存在定义的代码在执行下面的情况)

```javascript
sum();// Uncaught TypeError: sum is not a function
var sum = function(){

}

fn();
function fn(){//函数表达式的方式创建函数

}
```

```javascript

var fn = function sum(){
console.log(sum);//=>函数本身
console.log(1);//=>1
}
// sum();//=>Uncaught ReferenceError: sum is not defined
fn();
```
原文地址:https://www.cnblogs.com/kpengfang/p/9865936.html