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();
```
不要在该奋斗的年纪选择去偷懒,只有度过一段连自己都被感动了的日子,才会变成那个最好的自己.