扫码关注官方订阅号
认证高级PHP讲师
var m = plus(),m只是函数调用的返回值,函数内没显示的返回,会返回undefined,后面你调用m,要求m是函数,但是m是undefined,不可以调用。第二种调用plus()返回的是一个函数,所有会打印出一个函数最后一种就相当于第二种的plus()(),返回的函数没显示的返回,返回undefined
var m = plus()
m
undefined
plus()
plus()()
对于这几个问题,可以归结一个,就是函数后面直接括号到底表示什么?函数的 return 值到底表示什么?
可以这样简单理解,函数后面加括号会立即执行,return 是函数的返回值。
对于第一个,var m = plus(),plus 函数会直接执行,但是你 plus 函数没有返回值,所有 m = underfined,所有 m() 会报错;
对于第二个,plus() 执行后,返回的是一个函数对象,如你所看到的那样,你可以这样试一下 plus()();
对于第三个,是没问题的,此时 m 是一个函数,m() 会执行 console.log,这其中还会涉及到闭包。
var fun1(){ }
其实是
var fun1(){ return undefined }
不写return或者return后没写东西都是return undefined比如你的最下面那张图其实是m = function(){console.log(1+1)}(即plus()的返回值)然后m()会执行console.log(1+1)---->2undefined 是m执行的返回值,你没写就是undefined。
建议去看看return的相关知识
补充:用控制台执行函数语句会自动把返回值(return后的)打印出来。
前面都没毛病 我想问一下第三张图的undefined是哪来的
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
var m = plus(),m只是函数调用的返回值,函数内没显示的返回,会返回undefined,后面你调用m,要求m是函数,但是m是undefined,不可以调用。第二种调用
plus()返回的是一个函数,所有会打印出一个函数最后一种就相当于第二种的
plus()(),返回的函数没显示的返回,返回undefined对于这几个问题,可以归结一个,就是函数后面直接括号到底表示什么?函数的 return 值到底表示什么?
可以这样简单理解,函数后面加括号会立即执行,return 是函数的返回值。
对于第一个,
var m = plus(),plus 函数会直接执行,但是你 plus 函数没有返回值,所有 m = underfined,所有 m() 会报错;对于第二个,
plus()执行后,返回的是一个函数对象,如你所看到的那样,你可以这样试一下plus()();对于第三个,是没问题的,此时 m 是一个函数,m() 会执行 console.log,这其中还会涉及到闭包。
其实是
不写return或者return后没写东西都是return undefined
比如你的最下面那张图其实是
m = function(){console.log(1+1)}(即plus()的返回值)
然后m()
会执行console.log(1+1)---->2
undefined 是m执行的返回值,你没写就是undefined。
建议去看看return的相关知识
补充:用控制台执行函数语句会自动把返回值(return后的)打印出来。
前面都没毛病 我想问一下第三张图的undefined是哪来的