小编Ber*_*rgi的帖子

Eloquent Javascript:练习:一个列表

我正在从一本名为“Eloquent Javascript”的书中学习 JavaScript

我正在尝试解决这里描述的练习:http : //eloquentjavascript.net/04_data.html#h_nSTX34CM1M

我设法确定此代码有效:

function arrayToList(array) {

  var list = null;

  for (var i = array.length - 1; i >= 0; i--)
    list = {
      value: array[i],
      rest: list
    };
  return list;
}

console.log(arrayToList([1, 2, 3]));
Run Code Online (Sandbox Code Playgroud)

结果:{值:1,休息:{值:2,休息:{值:3,休息:空}}}

到目前为止,一切都很好,根据这本书,这是正确的解决方案。但!

当我尝试运行相同的东西但使用更长的数组时,让我们说:

console.log(arrayToList([1, 2, 3, 4, 5]));
Run Code Online (Sandbox Code Playgroud)

结果是:{ value: 1, rest: { value: 2, rest: { value: 3, rest: [Object] } } }

为什么是这样?我的代码错了吗?

javascript node.js console.log

2
推荐指数
1
解决办法
872
查看次数

节点docs中的这个`... $ {...} ...`代码是什么意思?

我将尝试一步一步地学习Express库和Node.js.首先我要看的是Node reqiure(moduleName)函数的细节.

我看了一下这个文档,并在示例文档中找到了一些奇怪的代码:

const circle = require('./circle.js');
console.log( `The area of a circle of radius 4 is ${circle.area(4)}`);
Run Code Online (Sandbox Code Playgroud)

更具体地说是${circle.area(4)}位.

根据我的理解,$在JavaScript中就像任何其他变量一样.当我们在客户端Web开发中使用它时,它被用作文档功能的委托(我认为).使用节点时分配的是什么?

最重要的是,这种语法意味着什么? ${circle.area(4)}

如果$只是对某个函数的引用someFunction(),那么它不等同于此someFunction(){cirle.area(4)}.我没有看到这可能是有效的语法.

另外,他们为什么不直接直接调用circle.area()函数呢?

javascript node.js ecmascript-6 template-strings template-literals

2
推荐指数
1
解决办法
6878
查看次数

从迭代器/生成器获取单个屈服值

我需要在每次调用后返回递增整数的实体.

例如,我有代码.

var id = 0; //global variable =(

function foo() {
   ....
   console.log("Your unique ID is " + id++);
   ....
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.但我想使用发电机来完成这项工作.

就像是:

function* getId() {
   var id = 0;
   while (true) {
       yield id++;
   }
}

 function foo() {
   ....
   console.log("Your unique ID is " + getId());
   ....
}
Run Code Online (Sandbox Code Playgroud)

但结果只是空图引号.我错过了什么?也许使用发电机对于这类发电来说是一个坏主意?

javascript generator node.js ecmascript-6

2
推荐指数
1
解决办法
682
查看次数

在ES6中导出/导入内置对象的自定义功能?

我有一个'自定义'目录,我想存储对内置对象原型的任何更改.每个被修改的内置对象都有自己的文件(即custom/String.js任何修改String.prototype).

除了这些文件之外,我还将调用一个文件custom/All.js来导出要使用的自定义功能.

All.js

export * from './String'
export {Multiply} from './Array'
Run Code Online (Sandbox Code Playgroud)

main.js

import * from './custom/All'
Run Code Online (Sandbox Code Playgroud)

String.js

// something like this
export String.prototype.doSomething = function() {}
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

javascript ecmascript-6 es6-modules

2
推荐指数
1
解决办法
1547
查看次数

ES6 - 如何修改其他模块中的变量

在 Global.js 模块中:

export let transLog = [];
Run Code Online (Sandbox Code Playgroud)

主要内容:

import * as G from "./Global";
G.transLog = [];
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

app.js?c99e:19 Uncaught TypeError: Cannot set property q of #<Object> which has only a getter
    at eval (app.js?c99e:19)
    at Object.<anonymous> (bootstrap e92860b74eb6dd40b159:62)
    at __webpack_require__ (bootstrap e92860b74eb6dd40b159:19)
    at bootstrap e92860b74eb6dd40b159:62
    at bootstrap e92860b74eb6dd40b159:62
Run Code Online (Sandbox Code Playgroud)

网络包配置:

const webpack = require('webpack');

module.exports = {
    entry: './js/app.js',
    plugins: [
        new webpack.SourceMapDevToolPlugin({
            filename: "[file].map"
        })
    ],
    output: {
        filename: './dist/app.js'
    },
    devtool: 'source-map'
};
Run Code Online (Sandbox Code Playgroud)

那么,如何修改其他模块中的变量呢?

javascript ecmascript-6 es6-modules

2
推荐指数
1
解决办法
2110
查看次数

如何在同一个表达式中构造和初始化缺失的嵌套字段?

我一直试图弄清楚嵌套的ES6解构是否支持这种功能.a如果它不存在,我想指定为空对象,然后将其属性名称分配给b范围变量b.

var {
  a = {},
  a: {
    b = 2,
  },
} = {};

VM40:4 Uncaught TypeError: Cannot destructure property `b` of 'undefined' or 'null'.
    at <anonymous>:6:5
Run Code Online (Sandbox Code Playgroud)

在没有假设对象格式的情况下,我似乎无法真正嵌套解构.以下工作,但我正在寻找一个更简洁的方法,您可以轻松地看到原始对象的嵌套布局.

var {
  a = {},
} = {};

var {
  b = 2,
} = a;

// works as expected
// starts to look crazy when 'forking' branches that may or may not exist
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

2
推荐指数
1
解决办法
726
查看次数

从异步函数返回解析值

在我的项目中,我使用 promise(下面的代码)pending,当我使用 keyword 时,该 promise 怎么可能await。有人可以帮我弄清楚,我做错了什么吗?

const getTs = async () => {
  const response = await axios.get('...')
    .then(res => res.data)
    .catch(() => 'ERROR');

  return response;
};

console.log(getTs()); // Promise { <pending> }
Run Code Online (Sandbox Code Playgroud)

javascript promise async-await ecmascript-6

2
推荐指数
1
解决办法
8274
查看次数

如何在forEach函数上执行async await

我是async等待和承诺的初学者.我阅读了一些文章并观看了一些教程视频,但我仍然无法完全理解它.所以我有一个我现在正在处理的代码

}).then(function() {
  var responseArray = []
  [url1,url2,url3,url4].forEach((url)=>{
      makeRequest(url)
  }).then((response)=>{
      responseArray.push(response)
  })
  return responseArray
})
Run Code Online (Sandbox Code Playgroud)

因此,如预期的那样,responseArray空的返回.我需要让它等到每个makerequest(url)的所有响应都被推送到responseArray.
这是我的尝试

}).then(function() {
      var responseArray = []
      [url1,url2,url3,url4].forEach((url)=>{
          async makeRequest(url)
      }).then((response)=>{
          await responseArray.push(response)
      })
      return responseArray
    })
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?

javascript foreach promise async-await

2
推荐指数
2
解决办法
7969
查看次数

为什么我在模式匹配时不能使用常量,即使它实现了 PartialEq 和 Eq?

我想net::Ipv4Addr::LOCALHOST在模式匹配时使用常量过滤掉 IPv4 localhost 地址:

use get_if_addrs; // 0.5.3
use std::net;

fn main() -> std::io::Result<()> {
    assert_eq!(
        "127.0.0.1".parse::<net::Ipv4Addr>().unwrap(),
        net::Ipv4Addr::LOCALHOST
    );
    {
        let ifaces = get_if_addrs::get_if_addrs().unwrap();
        for iface in ifaces {
            match iface.addr {
                get_if_addrs::IfAddr::V4(get_if_addrs::Ifv4Addr {
                    ip: _,
                    netmask: _,
                    broadcast: None,
                }) => (),
                get_if_addrs::IfAddr::V4(get_if_addrs::Ifv4Addr {
                    ip: net::Ipv4Addr::LOCALHOST,
                    netmask: _,
                    broadcast: _,
                }) => (),
                get_if_addrs::IfAddr::V4(addr) => println!("{:?}", addr),
                get_if_addrs::IfAddr::V6(_) => (),
            }
        }
    }
    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

use get_if_addrs; // 0.5.3
use std::net;

fn main() -> std::io::Result<()> { …
Run Code Online (Sandbox Code Playgroud)

ip-address pattern-matching rust

2
推荐指数
1
解决办法
371
查看次数

为什么我的 JS 程序在有/没有“问题行”的情况下表现不同?

问题出在handleLineEnd函数中。我撕掉了所有不需要显示问题的线条。

没有这条线:我可以在 ctx 上绘制多个矩形。

使用该线:每个矩形都会被下一个矩形覆盖。

该代码在旧版 Chrome (118.0.5993.71) 中运行良好,而在版本 119.0.6045.106 中则无法运行

function handleLineEnd(evt) {
  {
    startDrawing = false;
    var dummy = ctx.getImageData(3, 3, 5, 5); // problem line
    ctx.drawImage(canvaslayer, 0, 0);
    ctxlayer.clearRect(0, 0, el.width, el.height);
  }
}
Run Code Online (Sandbox Code Playgroud)

function handleLineEnd(evt) {
  {
    startDrawing = false;
    var dummy = ctx.getImageData(3, 3, 5, 5); // problem line
    ctx.drawImage(canvaslayer, 0, 0);
    ctxlayer.clearRect(0, 0, el.width, el.height);
  }
}
Run Code Online (Sandbox Code Playgroud)
var el = document.getElementById("canvasID");
var elcontainer = document.getElementById("containerID");
var ctx = el.getContext('2d');
var startpuntX, startpuntY, …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome canvas getimagedata html5-canvas

2
推荐指数
1
解决办法
157
查看次数