super-fool / blog

珍藏经典, 分享思想, 共同进步.加油
3 stars 0 forks source link

JS Coding 规范总结 #61

Open super-fool opened 5 years ago

super-fool commented 5 years ago

块级作用域 和 函数声明

function f () { 
  console.log('outside'); 
}
// IIFE
( function () {
  if( false ) {
    function f () {
      console.log('inside'); 
    }
  }
  f();
})()

全局声明了一个f函数, 在立即执行函数中的判断块中, 也声明了一个f函数.

在ES5中, 函数具有提升的特性, 那么就会输出inside.

但是, 在ES6中, 他会将函数声明视为变量声明, 即:

function f () { 
  console.log('outside'); 
}
// IIFE
( function () {
  let f; // ES6将以下的f函数视为变量进行了提升.
  if( false ) {
    function f () {
      console.log('inside'); 
    }
  }
  f(); // 在ES6中, 会报错, f is not function.
})()

所以, 我们不建议在块级作用域中声明函数

super-fool commented 5 years ago

常量 Const

const TEST_FN = function () {
};

对于常量, 我们必须用大写及下划线组成名称.