javascript - 关于变量赋值函数的问题
ringa_lee
ringa_lee 2017-04-11 10:17:09
[JavaScript讨论组]
function func(){
    console.log('fuck you!'); 
}
var o = new func();
  

为什么一定要用new 直接var o = f()不可以呢。这里需要理解什么知识点。

对函数调用加new和不加new关键字的运行机制不一样

  • 加new
    加了之后在函数内部会自动创建一个object对象,然后将该对象返回给接收的变量,也就是你写的var o上,

  • 不加new
    不加new的情况下,里面是不会创建object这个对象,并且如果你没有使用return语句返回任何东西的话,那var o将不回接收到任何东西,所以就是undefined

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
ringa_lee

对函数调用加new和不加new关键字的运行机制不一样

  • 加new
    加了之后在函数内部会自动创建一个object对象,然后将该对象返回给接收的变量,也就是你写的var o上

  • 不加new
    不加new的情况下,里面是不会创建object这个对象,并且如果你没有使用return语句返回任何东西的话,那var o将不回接收到任何东西,所以就是undefined

大家讲道理

var o = new f() ,使用new后就把f当做构造函数,会实例化一个对象,并赋值(引用)给变量o!
var o = f() //这只是简单调用f函数,把函数的返回值赋值给变量o,当函数内没有return时,默认返回undefined。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号