Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的简洁链接赋值运算符安全吗?(使变量无效)_Javascript - Fatal编程技术网

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声明的,因此它们都是当前范围的局部变量。