javascript - 严格模式下不会出现隐式参数的使用吗?

标签 javascript

这是正确的吗?这是新的吗?

我的意思是每个函数都有的隐式参数。

我注意到,当我在严格模式下使用参数时,我的代码会失败,如果我删除严格模式不是问题......这是新的还是一直都是这样?

console.log('foo.js running');
(function() {
  // 'use strict';
  // unexpected arguments in strict mode ...

这是我使用它的地方:

  _.extend = function(obj) {
    _.each(Array.prototype.slice.call(arguments, 1), function (object) {
      _.each(object, function(val, key){
        obj[key] = val;
      })
    });
    return obj;
  }

最佳答案

不,严格模式不会阻止使用参数。它确实稍微改变了它:arguments 对象不再与命名参数绑定(bind),因此:

function loose(a) {
  console.log(a);
  arguments[0] = "bar"; // Changes `a`
  console.log(a);
}
function strict(a) {
  "use strict";
  console.log(a);
  arguments[0] = "bar"; // Does not change `a`
  console.log(a);
}
loose("foo");
strict("foo");

关于javascript - 严格模式下不会出现隐式参数的使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43692842/

相关文章:

javascript - Node.js 似乎在循环后没有释放内存

javascript - 仅在通过 $http 加载数据后, Angular 应用程序中的初始化指令

javascript - AJV - 引用外部模式而不先添加它

javascript - D3.js 可折叠树 - 展开/折叠节点

javascript - Nest.js中如何返回202 Accepted然后继续处理请求

javascript - 为什么我的背景图片隐藏了我的键码生成器?

javascript - 打开下拉菜单时如何在正确位置反转箭头图标? Javascript

javascript - 脚本自己的域是什么意思?提供脚本的域或其 HTML 页面?

javascript - 仅在满足条件时执行一次 if 语句

javascript - 通过动态键和值创建数组