发现些神奇的知识

平常写东西发现的知识,分享出来,持续更新

Node环境输出this

=》再浏览器和node环境this指向不同,一般浏览器this指向window,node环境指向global

cosole.log(this)
// 这是再vscode中生成个js文件输出,印象中this应该指向global,但输出 {}
// 而这个 {} 是module.exports 基于node机制,默认为空对象,再其他文件仅用require导入
  • 导出来的是一个自定义模块,node模块中提供的一个外接口,为防止内部模块污染,默认为空对象
  • module.exports 和global存储不同,这是俩块内存
  • global指向的全局作用域,而此模块文件指向模块作用域, 如下:
// exportFile.js
var name = 'name';

this.name = 'moduleName';
global.name = 'gloablName';

module.export = {
	name
}
// requireFile
var mFile = require('./exportFile.js');
console.log(global.name); // gloablName
console.log(mFile.name) // moduleName
console.log(this.name) // undefined

如下是global作用域名

function fun () {
console.log(this) // 当然这指向的是global
}
fun() // 因调用时指向的全局

数组降纬

方法有很多,这采用闭包+递归,实现类似flat的功能

let arrAy = [1, [4, 5, 6, [7, [9], 8]], 2, 3];

/**
 * 
 * @param {*} array  数组,支持单纬和多纬,默认展开到一纬度
 * @param {*} extend  指定展开纬度数量
 */

let func = (array, extend) => {
    if (array.length < 0) return;
    let count = 0;
    return (funcc = (arr = array) => {
        count++;
        return arr.reduce((pre, cur) => {
            if (extend && count === extend)  return pre && pre.concat(cur);
            return pre && pre.concat(Array.isArray(cur) ? funcc(cur) : cur);
        }, [])
    }
    )()
}

// 通用多维展一纬度
let fun = (array) => array.reduce((pre, cur) => pre && pre.concat(Array.isArray(cur) ? fun(cur) : cur), []);

console.log(func(arrAy, 1)); // [ 1, 4, 5, 6, [ 7, [ 9 ], 8 ], 2, 3 ]

TS 类型 strictNullChecks

作用: 类型检测,非空类型
注*:在TS文档中建议开启

首先undefined和null 是所有类型的子集

let num:number = 0;
number = undefined;
number = null;

let str: string[] = ['0','1'];
str = undefined;
str = null;

// 以上这些都是成立的 

再ts 2.0 版本中 增加的strictNullChecks这配置项设置为true, 以上便不成立

还有些函数返回值为void(无任何类型,可为undefined或null)

function fun (args? : void)  {
	if(args === null | undefined | void){
	// 像这种非空参数,返回值可能是void ,但若不判断args,那么便受strictNullChecks限制,报类型	error
	return 0;
	}
	
}

function fun (callback?: ()=> void) {
	if(callback){
		callback() // 这种回调函数,也需要判断,否则受strictNullChecks检测报类型error
	}
}

React 为什么渲染俩次?

官方给的答复:链接

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值