javascript - js函数执行顺序问题,将函数赋值给变量,是否执行?
给我你的怀抱
给我你的怀抱 2017-05-19 10:07:46
0
2
612

为什么这样写不行。返回的a是undefined,按道理代码是顺序执行的啊,s有值之后才会res.send啊

到底是应该res.send(s)还是res.send(s())呢?
如果把一个函数赋值给一个变量,那么这个变量在声明的时候执行么?

就是下面代码声明s的时候s是否执行?

app.use("/test2",function(req,res,next){
   var s=utils.Test(function(value){
    console.log("value",value)
    console.log("!!!")
    return value
   
   })
   res.json(s())
})

下面这种写法就可以

app.use("/test2",function(req,res,next){
 utils.Test(function(value){
    console.log("value",value)
    console.log("!!!")
      res.json(s)
   
   })
 
})

utils.Test()

utils.Test=function(callback){
    request("http://localhost:3000/test/1.json",(err,res,body)=>{
        let result=JSON.parse(body)
        console.log("result",result)
        // console.log(typeof result)
        callback(result)
    })
}
给我你的怀抱
给我你的怀抱

全部回复(2)
我想大声告诉你

你给的代码是不是有问题,不过大概是因为utils.Test是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)的时候结果还没返回,你把他放在callback function里面执行就不会有这个问题。

Ty80
app.use("/test2",function(req,res,next){
   var s=utils.Test(function(value){
    console.log("value",value)
    console.log("!!!")
    return value
   
   })
   res.json(s())
})

这段代码哪里声明了 s 是一个函数了?是什么给了你信心让你一口咬定 s 一定是一个函数还信誓旦旦调用了 s?

如果把一个函数赋值给一个变量,那么这个变量在声明的时候执行么?

你并没有把一个函数赋值给一个变量,你把这个函数传递给了一个叫 utils.Test 的函数当第一个参数了啊亲,然后把返回值给了这个变量啊亲。

你说 s 到底是啥?那你要问 utils.Test 啊亲,鬼知道 utils.Test 到底干了什么,鬼知道你传递进去的那个函数,在 utils.Test 里到底经历了什么。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板