Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Optimization_Scope_Functional Programming - Fatal编程技术网

Javascript 变量声明作为参数的优点是什么?

Javascript 变量声明作为参数的优点是什么?,javascript,variables,optimization,scope,functional-programming,Javascript,Variables,Optimization,Scope,Functional Programming,此代码的优点是什么: function doSomething(a, b, c) { a = 'some value'; b = 23; c = []; // do some useful stuff with a, b and c } function doSomething() { var a = 'some value'; var b = 23; var c = []; // do some useful stuff with a, b and c }

此代码的优点是什么:

function doSomething(a, b, c) {
  a = 'some value';
  b = 23;
  c = [];
  // do some useful stuff with a, b and c
}
function doSomething() {
  var a = 'some value';
  var b = 23;
  var c = [];
  // do some useful stuff with a, b and c
}
关于此代码:

function doSomething(a, b, c) {
  a = 'some value';
  b = 23;
  c = [];
  // do some useful stuff with a, b and c
}
function doSomething() {
  var a = 'some value';
  var b = 23;
  var c = [];
  // do some useful stuff with a, b and c
}

我在github和一些库上见过几次这种技术…

我认为您在第一个构造中遗漏了一些东西,因为如果函数不使用传递给它的值,就没有理由向函数声明参数。事实上,这只会使代码对任何看到函数签名并认为它需要三个参数的人产生误导。您不应该像第一个示例那样编写代码,因为函数定义意味着您可以向它传递数据,当情况并非如此时,它将使用这些数据

第二个构造是简单地声明三个局部变量并初始化它们以便在函数中使用

正如您所写的,这两个版本的代码在操作方式上没有什么有意义的区别,因为如果有人愿意,命名参数可以像局部变量一样使用。注意,有一个技术区别是
doSomething。第一个代码块的长度
3
,第二个代码块的长度
0
,尽管该属性很少使用



我想你可以说第一个版本更短(节省了几个字节),但是冒着编写欺骗性代码的风险节省几个字节很少是明智的选择。最好将代码编写得对任何阅读或使用它的人来说都尽可能清晰,然后让最小化程序使其尽可能小以进行运行时优化(知道最小化的代码不是为人类消费而设计的)。

var
一次接受多个变量,因此第二个代码段可以按如下方式重写

function doSomething() {
  var a = 'some value',
      b = 23,
      c = [];
  // do some useful stuff with a, b and c
}
第一个代码片段试图将脚本“小”四个字符
var
,但事实上,它不仅让人困惑和混乱,而且比上面正确的脚本还要长,因为每个var名称都重复两次


回答你的问题:没有优势。不要这样做。

当它是一个参数时,您可以传入值吗?你在问什么?你能链接到一个实际的例子吗?我以前从未见过这个。很简单:省略“var”可以节省空间。。。但是,呈现参数和不使用参数可能会造成混淆,因此应该首选var声明。并不是你所看到的一切都是好的。上面的一个有论点,下面的一个没有。这没有任何意义,你在问什么?请看:由于var代码多次使用“var”,它比形式参数版本长。。。