如果 JS 包装器对象被认为是糟糕的风格,那么使用 lodash _.isString 等进行类型检查是否也被认为是糟糕
if JS wrapper objects are considered bad style, is type-checking with lodash _.isString etc. considered bad style as well?
正如其他问题和答案已经指出的那样,Google和Douglas Crockford都认为JS包装器对象风格不好,不应该使用。
如果是这种情况,使用 lodash _.isString
(适用于原始和对象包装的字符串),只是为了检查某些东西是否是字符串,是否也应该被认为是糟糕的风格吗?
在我看来,一些诸如此类的 lodash 函数主要用于函数式编程,例如 _.filter(myArray, _.isString)
,但是如果遵循仅使用原始字符串的最佳实践,则简单的typeof
检查就足以实现。
但是 _.isString
的 lodash 代码的作用远不止于此:
/**
* Checks if `value` is classified as a `String` primitive or object.
*
* @static
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
* _.isString('abc');
* // => true
*
* _.isString(1);
* // => false
*/
function isString(value) {
return typeof value == 'string' ||
(!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
}
这样做的动机是什么? 使用对象包装器的用户抱怨 lodash 方法对它们不起作用?
我不认为使用任何下划线/lodash类型检查方法是不好的做法或糟糕的风格。事实上,它们读起来非常好,而且通常不太容易出错。
使其适用于字符串对象和文字的动机是它只是必须。Lodash 是一个库,因此应该支持 JavaScript 中存在的任何怪癖。
至于为什么你可以使用字符串对象。我能想到的一个原因是您可以将属性附加到字符串前任:
var a = new String('foo bar');
a.b = 'baz';
相关文章:
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- 为什么使用“new”创建一个Javascript数组被认为是不好的
- 为什么流星会被认为是不安全的
- 这些被认为是Javascript闭包吗
- 美元符号可以被认为是jquery中的宏吗?
- 我的javascript函数有问题,我认为是document.getElementById('vodObj
- 这个JS函数会被认为是递归的吗
- “var self=this”被认为是一种代码气味
- 为什么数字垫被认为是字符
- jQuery.ajax认为是什么响应;成功”;
- 为什么这些字符被认为是大写的
- 什么被认为是在节点模块中共享“全局”变量的好方法
- JavaScript 认为是星期四和星期五
- 如果 JS 包装器对象被认为是糟糕的风格,那么使用 lodash _.isString 等进行类型检查是否也被认为是糟糕
- 为什么全局变量被认为是不好的做法?(node.js)
- 为什么纯字符串被认为是无错误的
- 编辑原始JQuery文件是否被认为是个坏主意
- 是否有任何SHA-256 javascript实现通常被认为是值得信赖的
- 为什么“mailto:”被认为是一种不友好的发送电子邮件方式