node.js와 모듈에 대해 배웠는데 Underscore 라이브러리가 제대로 작동하지 않는 것 같습니다 … Underscore에서 함수를 처음 사용할 때 _ 객체를 다음의 결과로 덮어 씁니다. 내 함수 호출. 아무도 무슨 일인지 알아? 예를 들어 다음은 node.js REPL의 세션입니다.
Admin-MacBook-Pro:test admin$ node
> require("./underscore-min")
{ [Function]
_: [Circular],
VERSION: '1.1.4',
forEach: [Function],
each: [Function],
map: [Function],
inject: [Function],
(...more functions...)
templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
template: [Function] }
> _.max([1,2,3])
3
> _.max([4,5,6])
TypeError: Object 3 has no method 'max'
at [object Context]:1:3
at Interface.<anonymous> (repl.js:171:22)
at Interface.emit (events.js:64:17)
at Interface._onLine (readline.js:153:10)
at Interface._line (readline.js:408:8)
at Interface._ttyWrite (readline.js:585:14)
at ReadStream.<anonymous> (readline.js:73:12)
at ReadStream.emit (events.js:81:20)
at ReadStream._emitKey (tty_posix.js:307:10)
at ReadStream.onData (tty_posix.js:70:12)
> _
3
Javascript 파일을 직접 만들어 가져 오면 제대로 작동하는 것 같습니다. Underscore 라이브러리에 특별한 것이 있습니까?
답변
Node REPL은 밑줄 변수를 사용하여 마지막 조작의 결과를 보유하므로 밑줄 라이브러리의 동일한 변수 사용과 충돌합니다. 다음과 같이 해보십시오 :
Admin-MacBook-Pro:test admin$ node
> _und = require("./underscore-min")
{ [Function]
_: [Circular],
VERSION: '1.1.4',
forEach: [Function],
each: [Function],
map: [Function],
inject: [Function],
(...more functions...)
templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
template: [Function] }
> _und.max([1,2,3])
3
> _und.max([4,5,6])
6
답변
오늘 (2012 년 4 월 30 일) 현재 Node.js 코드에서 평소와 같이 Underscore를 사용할 수 있습니다. 이전 의견은 REPL 인터페이스 (노드의 명령 행 모드)가 “_”를 사용하여 마지막 결과를 보유하지만 코드 파일에서 자유롭게 사용할 수 있으며 표준을 수행하여 문제없이 작동한다는 것을 지적합니다.
var _ = require('underscore');
행복한 코딩!
답변
또는 :
var _ = require('underscore')._;
답변
REPL이 이전 입력을 보유하기 위해 _
사용하는 이름 node.js
입니다. 다른 이름을 선택하십시오.
답변
참고 : 다음은 다음 코드 줄에서만 작동하며 우연의 일치로만 작동합니다.
Lodash와 함께
require('lodash');
_.isArray([]); // true
var _ = require('lodash')
Lodash는 필요할 때이 값을 전 세계적으로 신비하게 설정 한 이후로 없습니다 .