每当我在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
)
答案 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'函数中的行,这是我的大部分答案都指的是