Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用函数内部声明的变量获取函数名_Javascript_Function - Fatal编程技术网

Javascript 是否可以使用函数内部声明的变量获取函数名

Javascript 是否可以使用函数内部声明的变量获取函数名,javascript,function,Javascript,Function,我可以使用函数中的变量获取函数名吗 function abcd() { var temp; alert(" name of the function using temp "); }; 如何使用temp获取函数“abcd”的名称?您可以使用arguments.callee.name,如下所示 function abcd() { console.log("name of the function using", arguments.callee.name); }; ab

我可以使用函数中的变量获取函数名吗

function abcd() {
    var temp;
    alert(" name of the function using temp ");
};
如何使用temp获取函数“abcd”的名称?

您可以使用arguments.callee.name,如下所示

function abcd() {
    console.log("name of the function using", arguments.callee.name);
};

abcd();
# name of the function using abcd
var abcd = function () {
    console.log("name of the function using", arguments.callee.name);
};
注意:arguments.callee.name仅适用于使用名称定义的函数。它不适用于匿名函数。例如,如果您定义了函数,如下所示

function abcd() {
    console.log("name of the function using", arguments.callee.name);
};

abcd();
# name of the function using abcd
var abcd = function () {
    console.log("name of the function using", arguments.callee.name);
};
abcd将使用打印函数名。因为在这种情况下arguments.callee.name将是一个空字符串。

您可以使用arguments.callee.name,如下所示

function abcd() {
    console.log("name of the function using", arguments.callee.name);
};

abcd();
# name of the function using abcd
var abcd = function () {
    console.log("name of the function using", arguments.callee.name);
};
注意:arguments.callee.name仅适用于使用名称定义的函数。它不适用于匿名函数。例如,如果您定义了函数,如下所示

function abcd() {
    console.log("name of the function using", arguments.callee.name);
};

abcd();
# name of the function using abcd
var abcd = function () {
    console.log("name of the function using", arguments.callee.name);
};

abcd将使用打印函数名。因为在这种情况下arguments.callee.name将是一个空字符串。

在非严格模式下,您可以使用arguments.callee.name


但一般来说,你不应该这样做——假设一个对象或函数的变量是从内部已知的是不安全的,因为可以有多个变量,或者在匿名函数的情况下根本没有名字。

在非严格模式下,你可以使用arguments.callee.name


但一般来说,你不应该这样做——假设一个对象或函数的变量是从内部已知的是不安全的,因为可以有多个变量,或者在匿名函数的情况下根本没有名字。

为什么你必须使用变量?您可以获取函数名,但不能从变量中获取。为什么必须使用变量?您可以获取函数名,但不能从变量获取。一个函数怎么可以有多个名称?它可以分配给多个变量,但这些不是它的名称,它们只是引用它的其他方式。@Barmar是的,这是严格正确的,但在大多数情况下,变量和分配给函数的形式名称是相同的。但是,如果您已经为函数指定了一个正式名称,那么为什么您在内部需要它呢?因此在ES5 strict Mode中它会被弃用。一个函数怎么可能有多个名称呢?它可以分配给多个变量,但这些不是它的名称,它们只是引用它的其他方式。@Barmar是的,这是严格正确的,但在大多数情况下,变量和分配给函数的形式名称是相同的。但是,如果您已经为函数指定了一个正式名称,那么为什么您在内部需要它呢?因此在ES5严格模式下它会被弃用