nodejs 问题集

npx,npm 无法使用,无法下载

镜像问题。但是,21年时,淘宝镜像从原来的地址切换到了新的域名

解决办法:
清理缓存npm cache clean --force
设置新地址npm config set registry https://registry.npmmirror.com
查看是否配置成功npm config list

js start后 关于找不到@fortawesome模块报错

解决办法,更换3000端口。

动态弱类型语言的坑

许久未用JavaScript,今日使用因为一个问题,让我第一次感受到了弱类型动态语言的坑。

    let res = [];
    res.push = "cc";
    res.push['cc'];
    res.push('cc');

明显最后一个是正确用法,但是但是! 其他两个并没有报错!沃日!

第一个是直接以对象的方式,添加属性名为push,值为cc。
第二个偶然打出来,从语义分析的角度看,是从res中寻找一个名为push的对象,然后从里面查找属性。这显然是不可能存在的,但是没有报错!

太牛逼了。我仅仅是一个小脚本,就能踩到这样的坑。

不过,我注意到,常规数据(不知道怎么称呼了,就是number,string)的似乎在第二种情况会报错。

对象的赋值操作的浅复制坑

a = {'a':1}
b = {'b':a}
Object.assgin(b,a);

在写脚本时,我对一个对象值,赋值了一个对象。发现当源赋值对象发生变化时,被赋值对象也会发生变化。

明显,对象的简单赋值操作时,浅复制。

可以通过OBject.assgin操作进行一层深复制。但是 一旦涉及到了嵌套对象了,这种深度复制也只是浅复制。也就是对象a里面还有对象。

真正的深复制:

obj1 = {}
obj2 = {}
Object.assgin(obj1, JSON.parse(JSON.stringify(obj2));

据悉数组传参也是浅复制。

let r = [];
waldir(r)
function waldir(r){
	r.push("abc");
}
console.log(r)
posted @ 2024-08-08 18:40  no_no  阅读(15)  评论(0)    收藏  举报