在Javascript中将f声明为全局变量或局部变量会有什么不同吗?

时间:2018-03-22 14:48:26

标签: javascript variables scope closures

   function functionFunction(str) {
       var f;
      return f=function(obj){
          return str+', '+obj;
      }
  }
  functionFunction('Hello')('world')

这是我的代码。函数functionFunction将返回函数f。当我在函数functionFunction中声明变量f时,输出为“Hello,World”。当我在函数functionFunction之外声明变量时,输出是相同的。(代码如下)。但我知道在Javascript中全局变量和局部变量在不同的范围内工作。但是,在这种情况下,变量f是全局变量还是本地变量对结果没有影响。我想知道为什么

 var f;
 function functionFunction(str) {
        return f=function(obj){
            return str+', '+obj;
        }
  }
 functionFunction('Hello')('world')

1 个答案:

答案 0 :(得分:0)

TL; DR:不,没有功能差异。

执行return f= function()时,您会获得对该函数的引用,并设置变量f,即使f从未在任何地方实际使用过。如果没有使用未使用的变量,您的代码将同样有效。



function functionFunction(str) {
  return function(obj) {
    return str + ', ' + obj;
  }
}

let s = functionFunction('Hello')('world');
console.log(s);




您也可以使用ES6语法来执行此操作



const functionFunction = str => {
  return obj => str + ', ' + obj
}

let s = functionFunction('Hello')('world');
console.log(s);