专栏首页机器学习从入门到成神JavaScript之函数定义以及类型

JavaScript之函数定义以及类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/53523011

今天在网上做到一道面试题,代码如下:

var f = function g() {
        return 23;
    };
typeof g();

问:以上代码的输出结果是()

A “number” B “undefined” C “function” D Error

我第一反应选择的答案是A/C。然而正确答案是D

于是乎,我非常郁闷,就在自己的编译器上输入代码,亲自测试答案的正确性:

结果如下:

原来编译器真的是报错,上网查了查,才发现其中的奥秘。

在 JS 里,声明函数只有 2 种方法: 第 1 种: function foo(){…} (函数声明) 第 2 种: var foo= function(){…} (等号后面必须是匿名函数,这句实质是函数表达式) 除此之外,类似于 var foo = function bar(){…} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。

好奇的我又试了试另外几个函数表达法的返回值,结果如下:

var f=function g() {
    return 23;
}

console.log(typeof g());//error

console.log(typeof g);//undefined

console.log(typeof f);//function

console.log(typeof f());//number

输出如下:

由以上结果可知:typeof f 是指返回 f 的类型typeof f() 则是指返回 f() 执行结果的类型。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库闭包和候选码求解方法

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

    大黄大黄大黄
  • JavaScript之闭包问题以及立即执行函数

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

    大黄大黄大黄
  • 《你不知道的JavaScript》读书笔记(一)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

    大黄大黄大黄
  • JavaScript模式 读书笔记三

    函数是第一类对象 first-class object,可以作为带有属性和方法的值以及参数进行传递。

    lilugirl
  • jquery取消元素默认冒泡事件

    十月梦想
  • 函数表达式

    定义函数的方式有两种:第一种是“函数声明”,另一种就是“函数表达式”。 “函数声明”会被提升,意味着把函数声明放在调用它的语句后面。 示例1:

    奋飛
  • 编写高质量代码:改善JavaScript程序建议--函数式编程

    使用call和apply方法可以把一个函数转换为方法传递给某个对象。这种行为只是临时的,函数最终并没有作为对象的方法而存在,当函数被调用后,该对象方法会自动被注...

    奋飛
  • C语言数组

    用户2929716
  • AI科技大发展,生物识别技术盘点

    生物识别是根据人类生理特征(人脸、指纹、虹膜等)和行为特征(姿态、动作、情感等)实现身份认证的技术。在进行人体身份认证时,其主要通过计算机与光学、声学、生物传感...

    视觉大数据
  • jQuery源码研究:为jQ对象扩展的一些工具方法(上)

    上一章,讨论的是jQuery对象及其原型上的extend()方法,在源码中,实现了支持开发者自行扩展新方法的功能,但其实jQuery也通过对extend()传入...

    前端_AWhile

扫码关注云+社区

领取腾讯云代金券