标签: ecmascript-6

如何比较传播参数?

如何将spread参数的值与某个值进行比较?

例如:

var arr = [1, 4, 10];

if(Math.min(...arr) > 1) {
  console.log('Must be greater than 1');
}
Run Code Online (Sandbox Code Playgroud)

给了我undefined.与...自然相同Math.max(...arr).

如果我这样做也会发生:

var val = Math.min(...arr);
Run Code Online (Sandbox Code Playgroud)

然后将变量与某个值进行比较.

为什么?

javascript ecmascript-6

-4
推荐指数
1
解决办法
62
查看次数

为什么javascript对象没有map/reduce/filter?

假设我有这个对象:

const millionsOfLines = {
    windowsVista: 50,
    firefox: 9,
    google: 2000,
    quake3Engine: 0.3,
    mySQL: 12
};
Run Code Online (Sandbox Code Playgroud)

我会以同样的方式为数组做,如果我能做的话:

const lessThan10 = millionsOfLines.filter((value, key)=> value < 10);
Run Code Online (Sandbox Code Playgroud)

相反,我必须这样做:

const lessThan10 = {};
Object.keys(millionsOfLines).forEach(key=>{
    if (millionsOfLines[key] < 10) {
        lessThan10[key] = value;
    }
});
Run Code Online (Sandbox Code Playgroud)

多么麻烦.其他函数肯定也可以与数组版本完全相同的方式工作:

const thousandsOfLines = millionsOfLines.map((value, key)=> value * 1000);
const totalLines = millionsOfLines.reduce((total, currValue, currKey)=> total + currValue);
Run Code Online (Sandbox Code Playgroud)

我计划将其与我实际需要输入的内容进行比较,但我无法承受这种痛苦,所以这是留给读者的练习.

那么 - 为什么javascript对象没有map/reduce/filter?

javascript functional-programming ecmascript-6

-5
推荐指数
1
解决办法
193
查看次数

-5
推荐指数
1
解决办法
1282
查看次数

什么是此代码的es5等价物

function handleDeposit (accountNumber, amount) {
  type: 'DEPOSIT',
  accountNumber,
  amount
}
Run Code Online (Sandbox Code Playgroud)

它在调用时返回undefined.我不确定es6在这里使用的是什么功能

它等同于......

function handleDeposit (accountNumber, amount) {
  return {
    type: 'DEPOSIT',
    accountNumber: accountNumber,
    amount: amount
  }
}   
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5 ecmascript-6

-5
推荐指数
1
解决办法
145
查看次数

2018年的Callback vs Promise

如今,异步功能的标准是什么?

我不是在这里问基于选项的问题,而是要问2018年使用了更多的东西以及什么对将来的可伸缩性更好。

样式1:

const client = new SteamUser();
    exports.setup = callback => {
        client.on('webSession', async (sessionID, cookies) => {
            offers.setup(client, cookies, callback);
        });

        client.on('error', err => {
           callback(error)
        });
    };
Run Code Online (Sandbox Code Playgroud)

风格2:

const client = new SteamUser();
    exports.setup = async () => {
        return new Promise(function(resolve, reject){
            client.on('webSession', async (sessionID, cookies) => {
                resolve(await offers.setup(client, cookies));
            });

            client.on('error', err => {
               reject(error)
            });
         });
        };
Run Code Online (Sandbox Code Playgroud)

两者都通过以下方式在另一个文件中调用:

    try{
await module.setup();
} catch(err){
console.log(err);
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise ecmascript-6

-5
推荐指数
1
解决办法
1239
查看次数

Javascript ECMA6基本,变量未在ajax中定义

试着写一个简单的类来更新一个javascript列表.

  class ep_List {

     constructor()
     {
        this.urlForAjax ='';
        this.dataList=[];
        this.dataJson='';
        this.dataParams={};
     }

     getData(method,params,url)
     {
       this.urlForAjax = url;
       this.dataParams=params;

       if(method=='get')
        this.callGetAjax();
      else
        this.callPostAjax();
     }

     callPostAjax()
     { 
        $.post(this.urlForAjax,this.dataParams,this.setList(res));
     }

     callGetAjax()
     {
        $.get(this.urlForAjax,this.setList(res));
     }

     setList(res)
     {
        console.log(res);
        this.dataList =res;
     }

  }

  class gasFilter extends ep_List {


    displayList()
    {
        //console.log(this.dataList);
      $.each(this.dataList,function(val){
         console.log('sss');
      });
    }
  }

var gasObj = new gasFilter();

gasObj.getData('get','','mapper/?mtc=101');
Run Code Online (Sandbox Code Playgroud)

我收到错误了

未捕获的ReferenceError:在HTMLFocument的gasFilter.getData(app.js [sm]:140)的gasFilter.callGetAjax(app.js [sm]:140)中未定义res.(app.js [sm]:140)at j(jquery-3.1.1.min.js:2)at k(jquery-3.1.1.min.js:2)

欢迎提出建议

谢谢

javascript ajax jquery ecmascript-6

-7
推荐指数
1
解决办法
115
查看次数

为什么不能重新定义财产?

当我运行以下代码时,出现错误:

类型错误:无法重新定义属性:isBoolean

为什么我不能重新定义这些属性?

function isBoolean() {
  var value = arguments[0];
  if (!arguments.length) {return;}
  if (value===undefined || value===null) { return false; }
  if (typeof(value) === "boolean") {
    return true;
  } else {
    return false;
  }
}

function isString() {
  var value = arguments[0];
  if (!arguments.length) {return;}
  if (value===undefined || value===null) { return false; }
  if (typeof(value) === "string") {
    return true;
  } else {
    return false;
  }
}

function isNumber() {
  var value = arguments[0];
  if (!arguments.length) {return;}
  if (onoff) { …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5 ecmascript-6

-7
推荐指数
1
解决办法
2万
查看次数

operator'==='不能应用于类型'false'和'true'

我知道下面的代码是愚蠢的.但实时可以在使用相同类型的两个不同数据进行编译时实现.

if (false === true) {}// getting error
Run Code Online (Sandbox Code Playgroud)

operator'==='不能应用于类型'false'和'true'

但是Object.is()接受这个不同的数据没有任何错误,它返回false

我知道他们之间的区别.但是为什么打字机输出语法错误同时为什么Object.is()不抛出那个错误.

此错误消息也是正确的?或不?

operator'==='不能应用于类型'false'和'true.应该是这样的operator '===' cannot be applied to types 'Boolean' and 'Boolean'

如果消息错误,那么它在任何升级版本中都解决了吗?我使用的是typescript 2.0.3版本.

在下面的方案中发生此问题

等等..

javascript typescript ecmascript-6 angular

-8
推荐指数
1
解决办法
3285
查看次数

让关键字在 ES5 上工作吗?

以下代码在 ES5 编译器中的输出是什么?它会抛出任何错误还是会正常工作?

let foo = 123;
let {x,y} = getValues();
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5 ecmascript-6

-9
推荐指数
1
解决办法
6197
查看次数

在ES6中是否认为0为真?

在ES6中是否认为0为真?还是所有字符串都被认为是正确的?

这返回了true:

var value = "0";
var isTrue = value ? true : false; // true
Run Code Online (Sandbox Code Playgroud)

我以为===是为了严格的平等。

如果已更改,是否有办法为了兼容性而采用旧方法?

更新:

谢谢。我收到的值将始终是一个字符串,因此我将检查“ 0”和“ false”:

var booleanValue = value && value!=="0" && value!=="false" ? true : false;
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

-12
推荐指数
1
解决办法
103
查看次数