作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有两个按钮,一个用于“早上”,另一个用于“晚上”,我想根据单击的按钮console.log
“早上好”或“晚上好”。这是我在学习 Javascript 之前的做法:
var greeting;
//"d3.select" is just a selection using D3
d3.select("#button1").on("click", function(){
greeting = "morning";
hello();
});
d3.select("#button2").on("click", function(){
greeting = "evening";
hello();
});
function hello(){
console.log("good " + greeting);
}
使用参数和自变量,此代码执行相同的操作:
d3.select("#button1").on("click", function(){
hello("morning");
});
d3.select("#button2").on("click", function(){
hello("evening");
});
function hello(greeting){
console.log("good " + greeting);
}
据我所知,“我的方式”更糟糕,因为它有点长,而且使用的变量必须是全局变量(或至少比函数高一级)。但是,除此之外,我想问你:
注意:随意将其标记为重复项,但我搜索了很多并没有发现这个特定问题:它不是关于使用变量作为参数,而是使用变量而不是参数。谢谢。
最佳答案
总的来说,你这样做的方式(使用全局变量)通常是不好的做法,但如果你把它从全局范围中取出,它实际上会非常方便。仔细阅读 oop,您一定会遇到这样的事情。
function person(name){
this.name = name;
this.color;
this.greeting = function(){
alert("Hello, my name is "+this.name+" and my favorite color is "+this.color);
};
}
var me = new person("James");
me.color = "green";
me.greeting();
( fiddle )
在本例中,您为对象设置了一个变量,对象的函数使用对象中的变量而不是将其作为参数传递。这种类型的思维在面向对象编程中将是有帮助的(也是必要的)。
另外,为了好玩,我做了一些基准测试,看看哪种方法真正更快。这是一个可以为您测试的 fiddle 。 check it out .
关于javascript - 使用变量而不是参数 : a bad practice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965897/
我是一名优秀的程序员,十分优秀!