这个节点范围错误背后是什么?

时间:2015-01-29 16:44:19

标签: javascript node.js scope request

这里我有一个我正在研究的节点模块。以前它只是许多嵌套函数。我想改进代码,所以代之以写出所有函数,然后按顺序将它们全部调用。发生了一件奇怪的事情,而不是TypeError: Cannot read property 'url' of undefined

var User = require( '../models/userModel' ),
    ...

exports.add = function ( req, res ) {

    function getVideoId ( req, callback ) {
        videoId = URL.parse( req.query.url ).query.slice(-11)
        callback( videoId )
    }

    ...


    getVideoId( req, function() {
        ...
            ...
                ...
                    ...
                        ...

                            return res.json( "Done." )
                        })
                    })
                })
            })
        })
    })
}

1 个答案:

答案 0 :(得分:1)

退出函数时,您的范围发生了变化。由于您在另一个内部声明了一个函数,因此维护了作用域。因此,在嵌套函数3中,您可以使用嵌套函数1和2的所有值!