JavaScript中不赋值的可能问题
我有一段代码:JavaScript中不赋值的可能问题,javascript,Javascript,我有一段代码: function HeyHo(test){ var self = this; self.yo; if (test > 2) { self.yo = {}; } } $('.result').text(new HeyHo(3).yo === undefined) 输出为: false true 如预期,当值小于2时,输出为: false true 这也是意料之中的 但显然,这样做: self.yo; self.yo; 不是任务或电话
function HeyHo(test){
var self = this;
self.yo;
if (test > 2) {
self.yo = {};
}
}
$('.result').text(new HeyHo(3).yo === undefined)
输出为:
false
true
如预期,当值小于2时,输出为:
false
true
这也是意料之中的
但显然,这样做:
self.yo;
self.yo;
不是任务或电话。是否存在与此相关的性能或其他问题
关键是要让值以未定义的开头,然后有条件地给它一个值,这样我就可以在以后的代码中进行检查
但显然,这样做:
self.yo;
self.yo;
不是任务或电话。是否存在与此相关的性能或其他问题
是的:这毫无意义。:-)它没有任何效果,可以简单地删除。它所做的只是在self
上查找yo
属性(该属性不在那里,因此查找将导致未定义
),然后丢弃该值。从理论上讲,不必要的查找对性能的影响非常小,但要让它真正出现,你必须做大量的查找(比如“银河系中有多少颗星星”),这是假设JS引擎没有意识到它可以优化它
您也不需要self
。此代码在功能上与您的版本相同:
function HeyHo(test){
if (test > 2) {
this.yo = {};
}
}
$('.result').text(new HeyHo(3).yo === undefined)
请回复您的评论:
我这样做是因为检查一个对象是否未定义比检查它是否为空更容易,所以我不需要在填充它的可能性下执行self.yo={}
,而是先让它未定义
来消除这种变化
self.yo代码>行根本不对对象做任何事情,尤其是它不会在对象上创建yo
属性:
函数HeyHo1(){
这个.哟,;
}
函数HeyHo2(){
this.yo=未定义;
}
var h1=新的HeyHo1();
log(“h1是否有'yo'?”+('yo'在h1中?'Yes':'No');//不
var h2=新的HeyHo2();
log(“h2是否有'yo'?”+('yo'在h2中?'Yes':'No');//是
但显然,这样做:
self.yo;
self.yo;
不是任务或电话。是否存在与此相关的性能或其他问题
是的:这毫无意义。:-)它没有任何效果,可以简单地删除。它所做的只是在self
上查找yo
属性(该属性不在那里,因此查找将导致未定义
),然后丢弃该值。从理论上讲,不必要的查找对性能的影响非常小,但要让它真正出现,你必须做大量的查找(比如“银河系中有多少颗星星”),这是假设JS引擎没有意识到它可以优化它
您也不需要self
。此代码在功能上与您的版本相同:
function HeyHo(test){
if (test > 2) {
this.yo = {};
}
}
$('.result').text(new HeyHo(3).yo === undefined)
请回复您的评论:
我这样做是因为检查一个对象是否未定义比检查它是否为空更容易,所以我不需要在填充它的可能性下执行self.yo={}
,而是先让它未定义
来消除这种变化
self.yo代码>行根本不对对象做任何事情,尤其是它不会在对象上创建yo
属性:
函数HeyHo1(){
这个.哟,;
}
函数HeyHo2(){
this.yo=未定义;
}
var h1=新的HeyHo1();
log(“h1是否有'yo'?”+('yo'在h1中?'Yes':'No');//不
var h2=新的HeyHo2();
log(“h2是否有'yo'?”+('yo'在h2中?'Yes':'No');//是
但显然,这样做:
self.yo;
self.yo;
不是任务或电话。是否存在与此相关的性能或其他问题
是的:这毫无意义。:-)它没有任何效果,可以简单地删除。它所做的只是在self
上查找yo
属性(该属性不在那里,因此查找将导致未定义
),然后丢弃该值。从理论上讲,不必要的查找对性能的影响非常小,但要让它真正出现,你必须做大量的查找(比如“银河系中有多少颗星星”),这是假设JS引擎没有意识到它可以优化它
您也不需要self
。此代码在功能上与您的版本相同:
function HeyHo(test){
if (test > 2) {
this.yo = {};
}
}
$('.result').text(new HeyHo(3).yo === undefined)
请回复您的评论:
我这样做是因为检查一个对象是否未定义比检查它是否为空更容易,所以我不需要在填充它的可能性下执行self.yo={}
,而是先让它未定义
来消除这种变化
self.yo代码>行根本不对对象做任何事情,尤其是它不会在对象上创建yo
属性:
函数HeyHo1(){
这个.哟,;
}
函数HeyHo2(){
this.yo=未定义;
}
var h1=新的HeyHo1();
log(“h1是否有'yo'?”+('yo'在h1中?'Yes':'No');//不
var h2=新的HeyHo2();
log(“h2是否有'yo'?”+('yo'在h2中?'Yes':'No');//是
但显然,这样做:
self.yo;
self.yo;
不是任务或电话。是否存在与此相关的性能或其他问题
是的:这毫无意义。:-)它没有任何效果,可以简单地删除。它所做的只是在self
上查找yo
属性(该属性不在那里,因此查找将导致未定义
),然后丢弃该值。从理论上讲,不必要的查找对性能的影响非常小,但要让它真正出现,你必须做大量的查找(比如“银河系中有多少颗星星”),这是假设JS引擎没有意识到它可以优化它
您也不需要self
。此代码在功能上与您的版本相同:
function HeyHo(test){
if (test > 2) {
this.yo = {};
}
}
$('.result').text(new HeyHo(3).yo === undefined)
请回复您的评论:
我这样做是因为更容易检查