将参数名称与javascript中的变量名称相同处理是不好的形式?

时间:2015-01-27 23:57:54

标签: javascript

每当我在javascript中定义一个函数时,我经常将占位符命名为我希望它们。这导致了一个问题,即将这些参数声明为函数中的变量使它们具有相同的名称。这是一个问题(因为我经常看不到它)。

例如:

var words = 'Hello there';

var talk = function talk (words) {
  // Realizing this does nothing, I am leaving it in because other answers refer to it. 
 var words = words;
 //I suppose this could also be this.words = words?
 console.log(words);
}

talk(words); //To log "hello there"

这是一个极端的例子,但在许多情况下,似乎这比使用类似且不太正确的单词更有意义(如var letters = words

2 个答案:

答案 0 :(得分:0)

你应该避免JS中的变量提升,因为这可能会导致更大的问题

参考以下链接:

http://thecomputersarewinning.com/post/a-dangerous-example-of-javascript-hoisting/

http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

答案 1 :(得分:0)

作为可读性的原则,最好避免不必要的混淆。在您的示例中,如果您的var-words是经过修改的单词的深层副本,那么会打印什么?即使你知道答案,你的开发人员也会这样吗?在修改代码之前,他们会主动去找出正确的答案吗?特别是在javascript的情况下,它试图使所有代码尽可能地运行,它可能导致未定义的行为和错误。

在大多数情况下,这不是必须发生的,因为你应该适当地命名你的副本,或者如果他们没有服务于一个值得一个新名字的目的(例如sortedWords,或复制词,五个字母等)

如果您必须按照您的极端示例说明,我能想到的最好的方法是将参数变量名称更改为" words_argument"或类似的东西,以避免混淆。

编辑:似乎OP编辑了一个问题,删除了' var words = words'函数中的行,这是我的大部分答案都指的是