如何将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)
然后将变量与某个值进行比较.
为什么?
假设我有这个对象:
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?
如何在JSFiddle中为不支持ES6的浏览器(如IE)启用ES6?
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) 如今,异步功能的标准是什么?
我不是在这里问基于选项的问题,而是要问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列表.
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)
欢迎提出建议
谢谢
当我运行以下代码时,出现错误:
类型错误:无法重新定义属性: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)我知道下面的代码是愚蠢的.但实时可以在使用相同类型的两个不同数据进行编译时实现.
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版本.
在下面的方案中发生此问题
1
Object.is("string", "string");
if ("string" === "string1") {
}
Run Code Online (Sandbox Code Playgroud)2
Object.is(1, 2);
if (1 === 2) {
}
Run Code Online (Sandbox Code Playgroud)等等..
以下代码在 ES5 编译器中的输出是什么?它会抛出任何错误还是会正常工作?
let foo = 123;
let {x,y} = getValues();
Run Code Online (Sandbox Code Playgroud) 在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) ecmascript-6 ×10
javascript ×10
ecmascript-5 ×3
ajax ×1
angular ×1
jquery ×1
jsfiddle ×1
node.js ×1
promise ×1
typescript ×1