window.reply=(function()
{
var is_ready=false;
function ready(callback)
{
is_ready=true;
callback && callback();
}
return {
is_ready:is_ready,
ready:ready
}
}());
if(reply.is_ready)
{
test();
}
else
{
reply.ready(test);
}
function test()
{
console.log(reply.is_ready);
}
上面的打印结果是false,为何不是引用传递的呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
基本类型传值 引用类型传reference.
复制某个对象的某个变量是对象的引用。但为对象添加属性,操作的是实际对象。不是引用传递
javascript中参数的传递都是按值传递的,只不过对于基本类型传递实际值,对于对象传递对象地址。
javascript一个属性的对应的"值"只计算一次,除非你对其重新赋值改变它。
对应到你的问题,也就是reply对象的is_ready的值和ready对应的函数对象在匿名函数执行完毕后就是确定的固定的,是不变化的-基本类型值固定,对象包括函数对象地址固定,除非你对is_ready和ready重新赋值
例如代码修改为:
结果为
true也可以修改成这样
结果同样为
true