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)

浙公网安备 33010602011771号