JS这几个基础的函数不是很理解

发布于 2022-09-04 04:59:06 字数 462 浏览 22 评论 0

为什么下面会报错 “m is not a function”

m报错


为什么下面两个函数输出的结果不一样

图片描述

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

北城挽邺 2022-09-11 04:59:06

图1:

clipboard.png

var m = plus();
m等于plus函数的返回值 因为没有返回值 则为undefinded
当你执行m()的时候就是m为undefined

图2:

clipboard.png

函数plus有返回值, 是一个方法; 则当你调用plus的时候(plus())则输出他的返回方法

图3:

clipboard.png

var m = plus();
m等于plus函数执行后的返回值 为一个function 函数体为console.log一个数字

当你执行m()的时候首先就会执行一个console.log
然后下方的undefined 为m()执行的返回值, 因为没有设置返回值则为undefined

萌酱 2022-09-11 04:59:06

var m = plus()m只是函数调用的返回值,函数内没显示的返回,会返回undefined,后面你调用m,要求m是函数,但是mundefined,不可以调用。
第二种调用plus()返回的是一个函数,所有会打印出一个函数
最后一种就相当于第二种的plus()(),返回的函数没显示的返回,返回undefined

叹倦 2022-09-11 04:59:06

对于这几个问题,可以归结一个,就是函数后面直接括号到底表示什么?函数的 return 值到底表示什么?

可以这样简单理解,函数后面加括号会立即执行,return 是函数的返回值

对于第一个,var m = plus(),plus 函数会直接执行,但是你 plus 函数没有返回值,所有 m = underfined,所有 m() 会报错;

对于第二个,plus() 执行后,返回的是一个函数对象,如你所看到的那样,你可以这样试一下 plus()()

对于第三个,是没问题的,此时 m 是一个函数,m() 会执行 console.log,这其中还会涉及到闭包。

锦上情书 2022-09-11 04:59:06
var fun1(){
    
    }

其实是

var fun1(){
    
    return undefined
    }

不写return或者return后没写东西都是return undefined
比如你的最下面那张图其实是
m = function(){console.log(1+1)}(即plus()的返回值)
然后m()
会执行console.log(1+1)---->2
undefined 是m执行的返回值,你没写就是undefined。


建议去看看return的相关知识


补充:用控制台执行函数语句会自动把返回值(return后的)打印出来。

独行侠 2022-09-11 04:59:06

前面都没毛病 我想问一下第三张图的undefined是哪来的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文