gpt4 book ai didi

javascript - 使用变量而不是参数 : a bad practice?

转载 作者:行者123 更新时间:2023-11-29 19:15:03 24 4
gpt4 key购买 nike

假设我们有两个按钮,一个用于“早上”,另一个用于“晚上”,我想根据单击的按钮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);
}

据我所知,“我的方式”更糟糕,因为它有点长,而且使用的变量必须是全局变量(或至少比函数高一级)。但是,除此之外,我想问你:

  1. 效率:其中一个示例是否比其他示例更快?使用一种或另一种方式有什么优势吗?
  2. 可读性:我知道争论更常见,但“我的方式”是否可以理解?是不是太奇怪了?
  3. 这是一种糟糕的编码方式吗?

注意:随意将其标记为重复项,但我搜索了很多并没有发现这个特定问题:它不是关于使用变量作为参数,而是使用变量而不是参数。谢谢。

最佳答案

总的来说,你这样做的方式(使用全局变量)通常是不好的做法,但如果你把它从全局范围中取出,它实际上会非常方便。仔细阅读 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com