我有一个函数,它应该检查传递给函数的参数是否未定义,如果其中任何一个是,则返回 false。我正在使用 node.js
。
我遇到的问题是,将 arguments
对象记录到控制台会返回意外的输出。
这是我的箭头函数:
var checkYargsExist = () => {
//console.log(arguments);
for (x in arguments) {
if (arguments[x] === undefined) {
return false;
}
}
}
假设: var 阿尔法=“苹果”; var beta = "香蕉";
如果我这样调用该函数:checkYargsExist(alpha, beta)
,我希望console.log()
吐出[alpha, beta]
,并比较"apple"=== undefined
,"banana"=== undefined
,但我的终端吐出如下内容:
{ '0': {},
'1':
{ [Function: require]
resolve: [Function: resolve],
main:
Module {
id: '.',
exports: {},
parent: null,
filename: '/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/app.js',
loaded: false,
children: [Object],
paths: [Object] },
extensions: { '.js': [Function], '.json': [Function], '.node': [Function] },
cache:
{ '/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/app.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/lodash/lodash.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/yargs.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/lodash.assign/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/lib/command.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/lib/completion.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs-parser/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/camelcase/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs-parser/lib/tokenize-arg-string.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/lib/usage.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/cliui/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/string-width/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/strip-ansi/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/ansi-regex/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/code-point-at/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/is-fullwidth-code-point/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/number-is-nan/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/wrap-ansi/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/decamelize/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/window-size/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/lib/obj-filter.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/set-blocking/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/yargs/lib/validation.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/y18n/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/read-pkg-up/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/find-up/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/path-exists/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/pinkie-promise/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/read-pkg/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/load-json-file/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/graceful-fs/graceful-fs.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/graceful-fs/polyfills.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/graceful-fs/fs.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/graceful-fs/legacy-streams.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/strip-bom/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/is-utf8/is-utf8.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/parse-json/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/error-ex/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/is-arrayish/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/parse-json/vendor/parse.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/parse-json/vendor/unicode.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/pify/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/normalize-package-data/lib/normalize.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/normalize-package-data/lib/fixer.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/semver/semver.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/validate-npm-package-license/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/spdx-expression-parse/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/spdx-expression-parse/parser.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/spdx-correct/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/spdx-license-ids/spdx-license-ids.json': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/hosted-git-info/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/hosted-git-info/git-host-info.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/hosted-git-info/git-host.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/is-builtin-module/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/builtin-modules/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/normalize-package-data/lib/extract_description.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/normalize-package-data/lib/typos.json': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/normalize-package-data/lib/make_warning.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/normalize-package-data/lib/warning_messages.json': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/path-type/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/pkg-conf/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/object-assign/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/symbol/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/require-main-filename/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/notes.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/os-locale/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/lcid/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/invert-kv/index.js': [Object],
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules/lcid/lcid.json': [Object] } },
'2':
Module {
id: '.',
exports: {},
parent: null,
filename: '/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/app.js',
loaded: false,
children: [ [Object], [Object], [Object] ],
paths:
[ '/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/node_modules',
'/Users/raigovind93/Dropbox/Localhost/Coding/Node/node_modules',
'/Users/raigovind93/Dropbox/Localhost/Coding/node_modules',
'/Users/raigovind93/Dropbox/Localhost/node_modules',
'/Users/raigovind93/Dropbox/node_modules',
'/Users/raigovind93/node_modules',
'/Users/node_modules',
'/node_modules' ] },
'3': '/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app/app.js',
'4': '/Users/raigovind93/Dropbox/Localhost/Coding/Node/notes-node-app' }
我做错了什么?谢谢!
最佳答案
From MDN :
An arrow function expression has a shorter syntax compared to function expressions and does not bind its own this, arguments, super, or new.target.
您正在检查创建函数的范围的参数
。
如果您想使用函数的参数
,则不要使用箭头函数创建它。坚持使用常规函数声明或函数表达式。
关于JavaScript 参数对象返回意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41012519/