Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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 创建toLowerCase函数时,一种方法是否优于另一种方法?_Javascript - Fatal编程技术网

Javascript 创建toLowerCase函数时,一种方法是否优于另一种方法?

Javascript 创建toLowerCase函数时,一种方法是否优于另一种方法?,javascript,Javascript,Angular为String.toLowerCase创建一个包装函数,我假定它可以作为Angular方法调用。例如,角度。小写(字符串)。查看他们的代码-希望获得有关他们的方法的反馈,以及它是否比我看到和使用的另一种模式/方法更好 角度法 var lowercase = function(string) { return isString(string) ? string.toLowerCase : string; }; lowercase("MYSTRING"); // mystring

Angular为String.toLowerCase创建一个包装函数,我假定它可以作为Angular方法调用。例如,角度。小写(字符串)。查看他们的代码-希望获得有关他们的方法的反馈,以及它是否比我看到和使用的另一种模式/方法更好

角度法

var lowercase = function(string) {
  return isString(string) ? string.toLowerCase : string;
};

lowercase("MYSTRING"); // mystring
另一种方式(我假设在他们的代码中是)


难道只是煮鸡蛋的方法不止一种吗。。或者他们对第一种方法有什么明显的优势

煮鸡蛋的方法肯定不止一种,而且两种方法似乎同样“有效”,尽管它们做的事情并不完全相同,甚至不会产生相同的结果

角度解决方案选择仅在输入数据为字符串时尝试小写。我可以看到两个原因。第一个可能是不想浪费时间将它传递给小写函数(如果它不是字符串)。第二个是小写的副作用是,不管输入是什么,输出都会以字符串的形式返回,也许他们不希望这样

以以下代码为例,假设上述两个函数之一:

var example = 1;
if (lowercase(example) + 1 === "11") {...}
通过当前角度方式,这将返回false(1+1=2)。 通过另一种方式,这将返回true(“1”+1=“11”)

至于这是否一个预期的副作用,我不知道。但是,这与人们对本机javascript的期望不一致,在评估该方法是否更有利时,应该明确考虑到这一点

示例

函数isString(值){
返回值的类型=='string';
}
var lowercase1=函数(字符串){
返回isString(string)?string.toLowerCase():string;
};
var lowercase2=Function.prototype.call.bind(“”.toLowerCase);
var测试=[“示例”,“12345”,67890,“真”,真,[1,2,3],{赢:1,输:0}];
var strings=['“ExAmPlE”'、'“12345”、'67890'、'true'、'true'、'[1,2,3]'、'{bar:1}'];
对于(变量i=0;i
表格{
边界塌陷:塌陷;
}
表,th,td{
边框:1px纯黑;
}
th,td{
最小宽度:60px;
}

有棱角的
土生土长的

为什么不使用:javascripts toLowerCase()方法我认为“角度方式”比“其他方式”更具可读性,以保持一致性,如果您使用AngularJS,您可能应该遵循他们推荐的指导原则(即,使用“角度方式”).干杯,感谢所有的回复-@war10ck,这并不是说要用棱角的方式来做,而是说你在angular应用程序中使用angular.lowercase。我只是想知道我自己的编码实践,真的。Tom-thx有点同意@Geohut-很难用一句话来解释。但有时作为函数访问——为了能够在库和api中使用,etcI在前面做了一些测试,我没有注意到输出中有任何差异。我以为他们的是那种“类型”支票,这就是区别。但当我检查时,也没有出现错误。所以当我有更多的时间来寻找答案的时候,我会在你的回复上回复你time@jamie我在帖子中添加了一个可运行的示例。它比较了各种输入类型后每个函数产生的不同“类型”输出。“isString”函数取自angular.wow super-我没走那么远。因此,角度方式保持了
类型的检查。而native会以某种方式将任何内容转换为类似字符串的类型
。转到MDN站点查看src代码。他们不会在最后发布它或正常的多边形填充信息。你不知道在哪里可以找到它?答案有点离谱:)@jamie这是我能找到的最新的变更日志:我在这里找到了:编辑:找到了javascript,作为上面的第一个链接添加;)JS一是个测试,我的错误。这是旧的第一个CPP文件链接。只需搜索ToLowerCase:
var example = 1;
if (lowercase(example) + 1 === "11") {...}