搜尋

首頁  >  問答  >  主體

javascript - js函數執行順序問題,將函數賦值給變量,是否執行?

為什麼這樣寫不行。回傳的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)
    })
}
给我你的怀抱给我你的怀抱2776 天前586

全部回覆(2)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:09:46

    你給的程式碼是不是有問題,不過大概是因為utils.Test是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)的時候結果還沒返​​回,你把他放在callback function裡面執行就不會有這個問題。

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-19 10:09:46

    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 裡到底經歷了什麼。

    回覆
    0
  • 取消回覆