TTTTTTTZL
TTTTTTTZL
以最新ES6标准: 基本类型: String,Number,Boolean,null,undefined,Symbol typeof null === 'object' ---> null属于对象 此处延伸一下对null的理解: null与undefined相似,表示一个空值,即此处的值为空,调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。 基本类型因数据量小存储于栈中,复杂数据类型因数据量可扩展而存储于堆中。 通常声明的复杂数据类型实际上只是一个指针,相当于宾馆的房间号,仅仅表示该声明指向这个房间。所以会引发浅拷贝/深拷贝的情况,而基本类型不会发生这种情况 ---tl
`` var a = new Number(); var i = 1; a.valueOf = function(){ return i++; } console.log(a == 1 && a == 2 && a == 3) ---> true ``...
防抖函数(debounce): 含义:触发事件后在n秒之内只触发函数一次,如果在n秒事件内再次触发事件,则n归零,重新计算时间。 应用场景:input输入框输入信息请求后台数据,若输入一个字便请求一次服务器,会增加服务器压力,耗费性能。频繁点赞取消点赞、window触发resize、手机或邮箱的验证等。 目的:限制函数触发频率; 实现核心:维护一个setTimeout,在冷却时间内再次触发函数则清空原setTimeout重新计算一个setTimeout推入队列等待执行。 ``` function debounce(func,wait){ var timeout; return function(){ var context = this; var args = arguments; clearTimeout(timeout) timeout = setTimeout(function(){ func.apply(context,args); },wait) } } ```
JavaScript是一门单线程的语言,所以它的执行顺行是由上往下执行的;  我们再看一段代码:  怎么执行效果不一样? JavaScript的执行顺序由上往下执行的没错,但是javascript不是一行一行的分析和执行代码,而是一段一段的分析执行,并且在代码执行前会有一个 ‘准备工作’,变量提升和函数提升就是属于代码的准备工作! 而这里的’准备工作‘就是 ------> 执行上下文(execution context). 当函数写的多了,怎么来管理这么多的‘准备工作呢’? JavaScript创建了执行上下文栈 ( Execution context stack, ECS )来管理执行上下文。 我们用数组来模拟一下 执行上下文栈 的行为: ` ECStack = []; ` JavaScript运行时最先遇到的就是全局代码,所以初始化的时候会向 执行上下文栈 压入一个全局执行上下文,我们可以用globalContext来表示,当且仅当应用程序关闭的时候全局上下文才会消失。所以在程序关闭之前,ECStack最底下永远都有一个全局上下文...
display:none; visibilty:hidden; position:relative;position:absolute; top:-999999999px; opacity:0; z-index:-99; 宽高为0;
- -!