javascript中的简洁链接赋值运算符安全吗?(使变量无效)
如果我想简洁地为某些变量设置空值:javascript中的简洁链接赋值运算符安全吗?(使变量无效),javascript,Javascript,如果我想简洁地为某些变量设置空值: var a = 'testa'; var b = 'testb'; var c = 'testc'; 与: 安全吗 编辑删除多余的var关键字 我从命令行尝试了以下操作: var f = function() { var a = b = c = null; } f() console.log(c) console.log(b) console.log(a) 还有这个 空 空 ReferenceError:未定义引用 所以b和c是全局变量!var被忽略!哎呀
var a = 'testa';
var b = 'testb';
var c = 'testc';
与:
安全吗
编辑删除多余的var
关键字
我从命令行尝试了以下操作:
var f = function() { var a = b = c = null; }
f()
console.log(c)
console.log(b)
console.log(a)
还有这个
空空
ReferenceError:未定义引用 所以
b
和c
是全局变量!var
被忽略!哎呀
我从命令行尝试了以下操作:
var f = function() { var a = b = c = null; }
f()
console.log(c)
console.log(b)
console.log(a)
还有这个
空空
ReferenceError:未定义引用
所以
b
和c
是全局变量!var
被忽略!哎呀 var a=b=c=null代码>被评估为var a=(b=(c=null))代码>因为JavaScript执行从右到左的计算。由于未定义c
和b
,c
和b
将成为全局变量,而a
是局部变量,因为a
是用var
定义的
所以这样做更安全
var a, b, c;
a = b = c = null;
var a=b=c=null代码>被评估为var a=(b=(c=null))代码>因为JavaScript执行从右到左的计算。由于未定义c
和b
,c
和b
将成为全局变量,而a
是局部变量,因为a
是用var
定义的
所以这样做更安全
var a, b, c;
a = b = c = null;
对什么可能不安全,或者你认为什么可能出错?请详细说明造成混淆的原因;我真的不知道如何解释这是“安全”的,因为我不确定会出什么问题。你可能不应该在复合赋值中有一个var
,因为它会给人一种错误的印象,即你正在重新定义a
@Baconbeastnz分离var
和赋值操作:var a,b,c;a=b=c=“测试”代码>谢谢伙计们,Yep,var是个打字错误!对什么可能不安全,或者你认为什么可能出错?请详细说明造成混淆的原因;我真的不知道如何解释这是“安全”的,因为我不确定会出什么问题。你可能不应该在复合赋值中有一个var
,因为它会给人一种错误的印象,即你正在重新定义a
@Baconbeastnz分离var
和赋值操作:var a,b,c;a=b=c=“测试”代码>谢谢伙计们,Yep,var是个打字错误!它似乎不正确,因为函数中定义了a
。它没有被忽略,它只适用于a。@sza——你认为计算机弄错了吗?问题是,既然函数中定义了a
,为什么在我记录它时不定义它?答案是,var
语句的全部要点是将一个变量定义为当前函数的局部变量。@bfaretto--是的,它没有被完全忽略,但被忽略的程度足以使操作出错。@Malvolio我没有投反对票:)在您的示例中,a
是局部变量,b
,c
是全局变量,这是绝对正确的。但在问题中,所有3个变量都是使用var声明的,因此它们都是当前作用域的局部变量。这似乎不正确,因为函数中定义了a
。它没有被忽略,只适用于a.@sza——你认为计算机弄错了吗?问题是,既然函数中定义了a
,为什么在我记录它时不定义它?答案是,var
语句的全部要点是将一个变量定义为当前函数的局部变量。@bfaretto--是的,它没有被完全忽略,但被忽略的程度足以使操作出错。@Malvolio我没有投反对票:)在您的示例中,a
是局部变量,b
,c
是全局变量,这是绝对正确的。但在问题中,所有3个变量都是使用var声明的,因此它们都是当前范围的局部变量。