具有匹配变量名的命名函数表达式
Named function expressions with matching variable name
我想知道javascript中的命名函数表达式,特别是node.
是否有理由避免以下内容?
var foo = function foo () {};
我真的很喜欢用函数表达式来组织代码,但是我真的很喜欢用函数声明来跟踪堆栈。据我所知,上面的代码可以工作,但它看起来不正确。
谁能提供一些见解?
ABE:我特别想找一个实例,你正在命名一个函数与你分配给它的变量相同。
函数声明带来了额外的负担,你必须在使用内部函数之前定义它们,以避免jslint警告,因此你的代码倾向于从最后读到第一个,这是我不喜欢的。
为了解决这个问题,你可以使用函数表达式,在顶部定义变量,然后按运行的顺序排列代码。然而,采用这种方法意味着您的函数都是匿名的,除非您为它们命名。这让我们回到了最初的问题。我可以将一个函数声明命名为与变量本身相同的变量吗
命名函数表达式在v8(因此节点)中工作,没有问题。只是旧版本的IE存在问题
区别如下:
// anonymous function expression
var x = function(){};
console.log(x.name); // "" -> empty string
// named function expression
var x = function foo(){};
console.log(x.name); // "foo"
// function statement (old thing with function 'hoisting' behavior)
function foo(){};
console.log(foo.name); // "foo"
您可以使用其中任何一个。当你写Class Object或者类似的东西的时候,Name是很方便的。
var foo = function() {};
function foo() {};
两者都应该是可能的。把它们组合起来应该不会有任何问题。
var foo = function foo () {};
很傻,因为你可以做
function foo () {}
没有理由在函数声明之上使用命名函数表达式
相关文章:
- 能够在定义函数表达式之前使用它
- 函数表达式,返回回调函数
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 函数声明与函数表达式之间的性能差异
- 立即调用函数表达式(IIFE)相对于普通函数的优势
- 如何防止 JS 缩小删除命名函数表达式的名称
- Angularjs 与 coffeescript 函数表达式中断
- JavaScript 混乱中的函数表达式
- 从ES6中的函数表达式访问类作用域
- 提升作为数组项的匿名函数表达式
- Javascript Mocha测试-测试函数表达式中的函数表达式
- 函数中的JavaScript函数表达式
- Javascript闭包覆盖函数表达式
- 函数表达式的词法作用域
- 请解释一下“;立即调用函数表达式“;以及“;自调用匿名函数”;
- JavaScript 中的函数语句和函数表达式
- ng-class 的函数表达式在 ng-click 时被调用
- 如何创建名称和主体存储在不同变量中的 JavaScript 函数表达式
- Object.Prototype 方法和 IIFE(立即调用的函数表达式)中的“use strict”
- 全局范围内的函数表达式与函数声明的区别