js零碎收集

1.instanceof和typeof的区别
typeof只能判断number,string,boolean,functnion,object,undefine
像array只能通过instanceof或者Array.isArray来判断
instanceof是用来判断某个变量是不是某个对象的实例

2.underfined,null,0,"",NaN默认都是false的

3.++ -- >typeof,void优先级>+-/ eg: typeof 23 //返回值是NaN,相当于typeof(2)*3、

4.||前面是true 直接返回前面的值,不用看后面;&&前面是true,直接返回后面的值

5.立即执行函数(function(){})();//注意分号

6.函数声明提升高于变量声明提升

7.若函数有多个参数,但是调用函数的时候只传递了一个函数,其他参数值为undefined; 若函数参数为空,则调用函数时,传递多少个参数都不会报错,可以通过arguments来访问参数

8.var let const 三者区别 const一旦声明赋值后不能改变,否则会报错;var有变量提升而let没有变量提升;let和const规定了JavaScript的块级作用域,在{}里用let和const声明的变量,出了{}就不能再使用了,但是var是可以的

9.delete不能删除var声明的变量,只能删除对象的属性,删除对象的属性后,再调用该属性返回undefined,若删除一个不存在的属性o.p同样也会返回true

10.判断一个变量是否存在用
if("x" in window)

11.数组的length是一个动态值

12.fn.bind(obj)的bind的作用:bind()函数会生成一个新函数(函数中的内容不发生变化只改变this的指向),新函数中的this是obj;
任何函数都有bind方法

13.hasOwnProperty可以判断一个对象的某个属性是否是自己创建的,而不是继承自原型链(hasownproperty不用查找原型链)

14.函数的toString返回函数的源码

15.document.querySelector()和document.querySelectorAll()
这是es5新扩展的便于获取html元素的方法其中前者只能获取一个元素,后者会获取符合的所有元素eg:
querySelector(".myClass span")←获取.myClass下span标签(如果span有多个只能获取第一个span,若要获取多个span只能用querySelectorAll() )

16.classList方法
elem.classList.add("classname")可以为元素添加class
替换元素replaceChild
div.replaceChild(newchild,oldchild);
删除元素removeChild
parentNode.removeChild(childNode);

17.addEventListener和removeEventListener接受三个参数:

  1. 事件类型(click,mouseover)
  2. 事件处理方法(function)
  3. 布尔参数,如果是true表示在捕获阶段调用事件处理程序,如果是false,则是在事件冒泡阶段处理,默认为false
    !!!!注意 body和window的区别,前者和后者加入事件监听是不同的,前者和内容相关,而window是整个浏览器的窗口

18.获取一个li的内容的方法
先获取ul,再为ul绑定一个事件通过e.target.innerText来获取内容

var ul=document.querySelectorAll("ul");
ul[0].addEventListener('click',function(e){
   console.log(e.target.innerText);
});

19.当多个元素时用事件代理(e.target)来操作元素

if(e.target.tagName.toLowerCase()==='li'){
    //to do...
}

20.setTimeout(函数或代码,毫秒数) 在运行到setTimeout时就开始倒计时毫秒,等到setTimeout之后的代码运行完再执行里面的函数
setTimeout和setInterval的timerId是以1开始计数的

21.navigator.userAgent用于判断当前设别类型(安卓,ios)
screen.width用于判断当前设备的宽度

var style = window.getComputedStyle(元素, "伪类");
var box=document.querySelector('.box')
console.log(getComputedStyle(box,'after')['width'])

22.ajax的四个步骤
1.var httpRequest=new XMLHttpRequest(); //创建ajax对象
2.httpRequest.onreadystatechange=function(){}
3.httpRequest.open('GET','/data',true); //设置请求方式及路径,true表示异步
4.httpRequest.send();

23.ajax的readyState属性5个值
0:未初始化。未调用open()方法
1:调用open()方法,但是没有调用send()
2:发送请求。调用send(),未收到响应
3:接受数据中
4:数据接收完成

24.状态码304表示请求没有被修改,可以直接使用浏览器中缓存的版本

25.get 和post的区别
post的参数发给后端写在xhr.send()中,get写在xhr.open中
post需要设置xhr.setRequestHeader()?

26.防止用户多次点击的方法
函数外部设置一个iTime=null;

btn.addEventListener('click',function(){
  clearTimeout(iTime);
  iTime=setTimeout(xxx函数,100)
})

27.apply和call的区别:
apply传递参数的时候是以数组的形式传递的,call传递参数的时候是一个一个传递的,第一个参数是this,如果第一个参数是null,那么this指向window例子:

var arr=[1,2,3];
Math.max.call(null,1,2,3);
Math.max.apply(null,arr);

apply第一个参数为空 null undefined 时,this指向window

28.继承:var cat=Object.create(animal);//不支持ie
继承的两个要点
1.子构造函数调用父构造函数
2.利用Zi.prototype=Object.create(Fu.prototype)把父构造函数的prototype拷贝一份给子prototype,这样子类就可以用父类的方法
3.改变子函数的prototype的constuctor指向为子函数Zi.prototype.constructor=Zi

29.如何判断this:
把所有函数调用都转换成call()形式eg:
obj.fn() ==》 obj.fn.call(obj) this 就是obj
fn() ==》 fn.call(undenfined) this就是window

30.insertAdjacentHTML

var x=document.getElementById("x")
x.insertAdjacentHTML('beforebegin',x)
position的位置

31.刷新当前页面的方法
location.reload(true)

32.什么情况下会出现undefined

1.函数没有返回值
2.声明了变量但是没有赋值
3.函数的参数没有赋值
4.访问对象上不存在的属性
5.用`void`对表达式求值

33.正则表达式

.   除了回车和换行之外的所有字符
\d  0-9
\s  空白符
\w  a-zA-Z0-9_
\b  单词边界

34.this的四种指向
(1)this指向调用者
(2)this指向window
(3)this指向new出来的对象
(4)当调用call,apply,bind时,指向绑定的对象

35.词法(静态)作用域:js只有函数作用域,函数的作用域在它定义的时候就确定了

36.promise是同步的,但是他的then()和catch()是异步的

setTimeout(function() {
  console.log(1)
}, 0);
new Promise(function executor(resolve) {
  console.log(2);
  for( var i=0 ; i<10000 ; i++ ) {
    i == 9999 && resolve();
  }
  console.log(3);
}).then(function() {
  console.log(4);
});
console.log(5);

输出2 3 5 4 1

(1)当前task运行,执行代码。首先setTimeout的callback被添加到tasks queue中;
(2)实例化promise,输出1;promiseresolved;输出2;promise.then的callback被添加到microtasks queue中;输出 3;
(3)已到当前task的end,执行microtasks,输出 5;
(4)执行下一个task,输出4。

microtasks包括
process.nextTick
promise
Object.observe
----------------
macrotasks包括
setTimeout
setInterval
setImmediate
I/O

microtasks和macrotasks

38.JSON的数据类型包括:
number string boolean null object array

let date=new Date()
data.toLocaleDateString()//2017/8/31

40.移除子元素的两种方法

1.node.parentNode.removeChild(node)
2.parentNode.removeChild(childNode)

41.原生js实现事件代理

ul=document.getElementsByTagName('ul')[0]
ul. addEventListener ('mouseover',function(e){
  lis=document.getElementsByTagName('li')
    if(e.target.nodeName.toUpperCase() === 'LI'){//这两句比较重要
      var index = [].indexOf.call(lis , e.target)//这两句比较重要
      console.log(index)
  }
})

42.&&表示前面成功才执行后面的,| 表示把前面的输出结果当成后面的输入

  1. Math.floor(1.2) === 1.2 | 0

npm ls -g --depth=1 2>dev/null | grep generator-
首先npm ls -g表示列出全局的树状结构,--depth=1表示最多向下一层,2>/dev/null2表示stand error (ps:1表示stand output),>表示重定向,/dev/null表示空设备2>/dev/null连起来表示标准错误重定向到空设备,翻译下就是过滤报错;|表示将前面的输出内容作为后面的输入内容,grep generator-表示会匹配generator-文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 553评论 0 2
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,703评论 2 17
  • 这是我这几天整理的关于阿里校招面试题汇总,希望对大家有所帮助。 链接:历年阿里面试题汇总(2017年不断更新中)
    大黄大黄大黄阅读 988评论 0 6
  • ——古琴演奏技法浅议明代琴家虞山派的重要代表徐青山,在他的琴学论著《溪山琴况》一书中曾介绍过传统的“按欲入木,弹如...
    金香书院阅读 413评论 0 0