看一些高手写代码单独用 “$”和“_” 来表示变量,什么时候单独使用这两个字符?
还有没有其他的一些小白不容易理解的习惯呢?
看一些高手写代码单独用 “$”和“_” 来表示变量,什么时候单独使用这两个字符?
还有没有其他的一些小白不容易理解的习惯呢?
_
表示没什么特别的意义。 比如在数组 map
forEach
这样的函数里
var goAhead = arr => arr.map(
// map 的第一个参数是函数
(_, idx, its) => {
return its[idx + 1] || its[0];
}
);
这里表示函数体用不上第一个参数 或者说第一个参数不重要 但是如果要用到 its 就不能省略中间的 _
或者有些更懒的。。。
setTimeout(_ => {
console.log('。。。括号都懒掉了');
}, 200);
还有,一些JS函数式编程库就用 _
来组织各种函数式工具 比如 _.forEach
_.map
这里的 _
没什么特别的意思,关键在于 .
后面的内容。
Haskell
经常用 _
来指代一些不重要的函数参数 (但是为了模式匹配又不得不写的)
至于 $
一般指 jQuery 或 Zepto 这种 DOM 库,约定俗成,大家一看便知这是 jQuery ,写起来也爽
很多人也提到了以下划线开头的变量,我来扯一句。
node
的 __dirname
表示执行的js所在目录,可为什么要加下划线地这样命名?
因为 dirname 是个很常见的变量名 如果不加前缀,那么很可能会跟某些人写的代码冲突,而加上前缀 __
那么他就是另外一个命名空间下的变量了 ( {x是变量名 | x 满足 "__*" }
)
这样就不会干涉到普通的 dirname 这个可能的变量名了。
因为方便,且不容易冲突。
当然,自从 jQuery
出现以后,也有一些类库使用 $
作为变量名。$
和 _
都少用不易冲突,而且符合变量命名的规范,简短,所以被用了作为一些类库的变量命名。_
开头接其他字母,例如 _this
表示是改方法私有,外界不能访问。
因为短!
var asdfasdfawdfsakdfaskjf
var $
还是$敲着省事儿
如果你要写类库,那么在使用时,外部入口就越简单越好!
就好像大伙用jquery时,用$
的比用jQuery
的多!
先说说_
,
当你必须要用一个变量获取一个值,而这个变量又不会被后文引用到的时候(因为_
做变量没有任何意义)
比如,
fn = () => [1, 2]
// fn是一个函数,返回两个数
// 假如我只对第二个数感兴趣,则可以用变量_来存放第一个数
[_, a] = fn()
// 现在_ = 1, a = 2
至于$
则是在jquery
里面用得比较多,用来代替jQuery
,让你敲得方便一点
我也谈谈我的看法:-和_
在css中,很经常见的是用text-info这样,使用破折号连接两个英文的,但是在一些场景,例如vue,有时候使用-会给你报错,所以听一些大神的意见,现在我使用_
或许单独用和Go的_有关系(也有可能Go是因为这个传统才), Go的_就代表这个变量不赋值, 因为Go可以有多个返回值, 以及有时候单独返回一个err, 可以用_去忽视返回值. 那这个多个返回值的操作在JS里其实被一些库通过解构赋值来实现, 相应的似乎也会有_来表示不要的操作?
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
这个虽然没有强制性规定,但是一般对于很多框架而言,
_
开头的字符串用于定义内部私有属性和方法,$
开头的字符串给外部暴露属性或方法,类如vue是这样的。另外对于一些框架为了书写方便且一般不会冲突,会使用
_
和$
作为命名空间或者属性方法:_
:underscorejs、lodash、__proto__(原型内部属性)等。$
:jQuery、zepto、$$(选择器)、正则$1-$9等。