在Javascript中使用setTimeout提取结果时出错

在Javascript中使用setTimeout提取结果时出错,javascript,settimeout,Javascript,Settimeout,我的脚本使用setTimeout函数时出错 例如,我的脚本是 function student() { var obj = { name: "Mary", number: +44 26281001 } return obj } 我想将函数的执行延迟4秒,然后保存到变量x。 我编写了以下函数: var x = setTimeout(student(), 4000); 它返回一个数字1280,4秒后返回错误: 未捕获的语法错误:意外的标识符 错误是什么

我的脚本使用setTimeout函数时出错

例如,我的脚本是

function student() {
    var obj = {
      name: "Mary", 
    number: +44 26281001
    }
 return obj  
}
我想将函数的执行延迟4秒,然后保存到变量x。 我编写了以下函数:

var x = setTimeout(student(), 4000);
它返回一个数字1280,4秒后返回错误:

未捕获的语法错误:意外的标识符

错误是什么?我应该如何修复它?
非常感谢您的帮助。

随信附上您的电话号码

number: '+44 26281001'
// or
number: "+44 26281001"
因此,
number
成为一个字符串。并将函数本身作为参数传递,而不是调用它并将
student()
的结果作为参数传递

var x = setTimeout(student, 4000);
顺便说一句,如果要分配/记录学生对象,则需要如下调用:

setTimeout(()=>console.log(student()), 4000);
编辑

function student(){
返回{
姓名:'玛丽',
编号:“+44 26281001”
}
}
学生变量;
var x=setTimeout(函数(){
studentVar=student();
}, 4000);
控制台日志(x);
console.log(studentVar);//日志“未定义”
(5秒后的功能日志X(){
设置超时(()=>{
控制台日志(x);
console.log(studentVar);//在5秒后记录student对象
}, 5000);

})();
setTimeout
将函数作为参数。您正在给它打电话给
学生的结果。谢谢!我像你说的那样运行代码,但是,当我在4秒钟后尝试使用console.log(x)时,我认为它显示了另一个数字2586,并且再次未定义。。为什么?查看编辑,它会立即显示setTimeout()调用返回的计时器Id。还有一个问题,如果我想分配/记录学生对象,除了ES6还有其他方法吗?更新了答案以演示如何分配student()函数的结果。来自MDN:“返回的timeoutID是一个正整数值,用于标识调用setTimeout()创建的计时器;此值可以传递给clearTimeout()以取消超时。“