IT不死旗下博客隆重开通啦,欢迎各位小伙伴们来围观 。

javascript函数中关于默认的返回值的猜测

Javascript Xueqi 1491℃ 0评论
<script type="text/javascript">

今天忽然想知道函数为什么不写return语句,为什么会隐式返回 undefined
先来看一个例子,
function Test2(){
   console.log("222");
}
console.log( Test2() ); // 222,undefined

那么问题来了,222是我们在控制台输出的,那undefined又是从哪里冒出来的呢?
    
    之前看教程,里面说到,如果函数没有返回值,就会返回undefined ,这里结果是对的,
    可是这里面究竟发生了什么呢?
   我们知道,函数可以用return语句,用于返回一些数据,可是这里我们
   没有写return语句,那么undefined是从哪里出来的呢? 我们猜测,会不会系统在内部隐式的执行了一个return语句

下面来验证我们的猜想:
看这个例子:
function Test2(){
   console.log('222');
   return '333';
}
console( Test2() ); // 222,333
alert( Test2() ); //222,333
这里倒是没有出现undefined,为什么呢? 因为我们自己定义了return语句。

这里相当于 console.log('222'),console.log('333')同理alert也是一样

因为我们显式的写了rerun语句,系统默认的return语句就被我们覆盖了,
(一个函数中只有第一return语句个有效,函数遇到return语句整个函数就结束了)。

注意:这里,如果我们写成return ; 就相当于系统默认的加的就那句return,
只是我们自己写了。得到的效果是一样的。

看看这个:
function Test3(){
   console.log("444");
   return ; // 也相当于return undefined; 注意这里没有双引号,不是字符串,是一种JS的数据类型。
}
console.log( Test3() );   // 444,undefined 确实和系统中的效果一样
这就证实了,如果没有显示的写return语句,系统内部确实是执行隐式执行一个return ;
总结:
也就是说,在JS中每一个函数中都有会执行一个return语句,
如果我们自己没有显式的写return语句,系统会默认的在函数末尾加一句 return ;(并执行)
因为什么也没有返回,所以其它变量就什么也没接收到,变量的值就为undefined!
也就是说,相当于函数隐式的返回了 undefined !
console.log( Test3() ) 这句话相当于 var res=Test3(); console.log(res);
因此,第一个例子我们可以改成:
function Test1(){
  console.log(“111”);
 // return ; 因为没有返回任何值,因此其它变量就什么都接收不到,所以变量显示的就是 undefined;
// 也相当于 return undefined;
}
这大概就是 函数没有显示的使用return返回值,函数就会隐式返回undefined的原因了

</script>

转载请注明:凌风阁 » javascript函数中关于默认的返回值的猜测

喜欢 (14)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址