美文网首页
js面试知识点汇总

js面试知识点汇总

作者: 大佬_娜 | 来源:发表于2017-09-07 19:31 被阅读0次

1.什么是闭包?举例说明
从作用域链谈闭包
闭包就是能够读取其他函数内部变量的函数,
闭包实现累加效果

function addcount(){
      var num = 0;
      return function(){
              return num += 1;
        }
}
var add = addcount();
console.log(add());
console.log(add());

3.冒泡机制实现数组排序 从小到大

var arr = [7,4,9,1,6,2];
function sortAt(num){
        for(var i = 0 ;i < arr.length-1; i++ ){
                    for(var j = i+1; j < arr.length;j++){
                                var v = arr[i]; //前一个的值
                                if(v > arr[j]){
                                          var index = arr[j]; //后一个的值
                                            arr[i] = index;
                                            arr[j] = v;
                                }
                      }
        }
        return arr;
}
console.log(sortAt(arr));

6.Js实现继承的方法

第一种方法,借用构造函数实现继承

function Person(){
            this.name = "nana"
}
function Teacher(){
         Person.call(this);
         this.type="teacher";
}

Teacher无法继承Person的原型对象,并没有真正的实现继承(部分继承);

第二种方法,借用原型链实现继承

function Person(){
          this.name = "nana";
          this.play = 123;
}
function Teacher(){
         this.type="teacher";
}
Teacher.prototype = new Person();

7.DOM事件

DOM事件模型是什么:指的是冒泡和捕获;
DOM事件流是什么:捕获阶段 => 目标阶段 => 冒泡阶段
DOM事件捕获的具体流程:window=>document=>html标签=>body=>目标对象

8.事件委托

事件委托就是利用冒泡的原理,把事件加到父元素或祖先元素上,触发执行效果。

<ul id="list">
        <li>item1</li>
        <li>item2</li>
        <li>item3</li>
</ul>

var list = document.getElementById("list");
list.addEventListener('click',function(event){
         event = event || window.event;
         var target = event.target || event.srcElement;
         if(target.nodeName == "LI"){
                   alert(target.innerHTML);
         }
})

9.事件监听

.onclick 常规的事件绑定只执行最后绑定的事件
btn.addEventListenter('click',function(){})  //可绑定多个事件
btn.attachEvent("onclcik",function(){})

10.ajax跨域

ajax出现请求跨域错误问题。主要是因为浏览器的“同源策略”。同源策略指的是协议相同,域名相同,端口相同。
如何解决ajax跨域问题
1.jsonp。客户端网页通过添加了一个script元素,向服务器请求json数据,这种做法不受同源政策;
2.代理请求方式解决接口跨域问题;配置proxy

11.mouseover 和 mouseenter的区别
mouseover,当指针穿过被选元素和子元素时,都会被触发;
mouseenter ,当指针穿过被选元素时会被触发;

12.行内点击事件改变样式

onclick="style.backgroundColor ='red';style.Color='#333';"

13.js中判断JSON数据是否存在某字段的方法

方法一: !('key'  in  obj)
方法二:obj.hasOwnProperty('key') 

15.作用域知识点

window.val = 1;
var json = {
      val:10,
      a:function(){
              this.val *= 2;
              return this.val;
      }
}
console.log(json.a()); 
var a = json.a;   
console.log(a()); 
json.a.call(window); 
console.log(json.a()); 
console.log(window.a()) ;  
//20
//2
//40
//8

16.作用域知识点
a方法里作用域属于window环境,所以此时,val的的值属于window.val  =1 ;

;(function(){
       var val = 1;
       var json = {
              val:10,
              a:function(){
                         val *= 2;
               }
       };
     json.a();  
     console.log(json.val + val)   
}())

//12

18.原型链继承知识点
B继承A.prototype原型链上的方法;但属性不继承;
构造函数如果有属性时,会先找构造函数里的属性值,如果没有,继续找prototype上是否有属性一值;

function A(x){
        this.x = x;
}
A.prototype.x = 1;
function B(x){
        this.x =x;
}
B.prototype = new A();
var a = new A(2);
var b = new B(3);
delete b.x;
console.log(a.x);
console.log(b.x);
// 2
//undefined

22. 下面的代码会输出什么?为啥?

for(var i = 0; i < 5; i++) {
        setTimeout(
             function() { console.log(i);
        }, i * 1000 );
}
输出5个5

25.神马是 NaN,它的类型是神马?怎么测试一个值是否等于 NaN?
NaN   (Not a Number 它不是一个数字) 类型是Number, isNaN()    
isNaN(23)  //false  isNaN('true')   //true

26.值类型和引用类型的区别
值类型 :将变量中的数据完整的拷贝一份,赋值给新的变量
var num = 123; var num1 = num;
console.log(num + num1)   //123,123
num = 1;
console.log(num + num1) //1,123
引用类型:表示变量存储的是数据的地址,复制时只是把地址复制一份,同时指向数据
var o ={n:123}; var o1 = o;
console.log(o.n + o1.n); //123,123
o1.n = 1;
console.log(o.n + o1.n); //1,1

27.深拷贝和先拷贝

浅复制是对对象地址的复制,并没有开辟新的栈,也就是复制的结果是两个对象指向同一个地址,修改其中一个对象的属性,则另一个对象的属性也会改变。
深复制则是开辟新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
function deepCopy (data) {   
           return JSON.parse(JSON.stringify(data));
}

28.call和apply方法;
作用:.改变执行上下文 实现继承
第一个参数 指向的是一个对象(调用对象),只是apply的参数只有2个,第2个参数其实是一个伪数组
function superClass () {
            this.a = 1;
            this.print = function () {
                   console.log(this.a);
            }
}
function subClass () {
            superClass.call(this);
            this.print();
}
subClass();

29.cmd和amd 的区别 
cmd和amd都是模块开发的一种规范(模块定义规范),amd加载模块是提前加载模块,cmd是延迟加载,就近加载
define(function(require,exports,module{
         var    a=require('./a')
         a.doSomething()
         var    b=require('./b')
         b.doSomething();
})  //cmd
define(['./a','./b'],function(a,b){
     a.doSomething()
     b.doSomething()
})  //amd

html&&css

1.alt和title的异同

alt是图片加载失败时,显示在网页上替代的字;搜索引擎对图片的判断,主要是靠alt属性。以简要文字说明,同时包含关键字。

title是鼠标放在图片上,显示的文字,是对图片进一步的说明;

2.简述一下src和href的区别;

href用于锚点或者文档之间的链接,用于超链接;

src指向外部资源的位置,指向的内容将会嵌套在文档中当前标签所在位置;例如img,script;

3.html5新元素;

新的表单控件;date、time、email

新的特殊内容标签;footer、header、nav、aside

对本地离线储存有了更好的支持;

用于媒介回放的video和audio;

4.什么是css hack

针对不同的浏览器写不同的css,就是css hark;

ie7 *background:blue; ie5 _background:red;

前缀加_或者*......

5.px和em的区别

px的值是固定的,是绝对单位,指定多少是多少,写出来的大小只能和设计稿上的一样;

em的值是相对于父级,是个相对元素,每次换算可能费点时间,考虑父元素的设置大小;

rem是相对元素,指相对于根元素也就是html;html{font-size:62.5%}  h1{font-size:2.4rem}

6.html5离线储存

localStorage :长期储存数据,浏览器关闭后数据也不会丢失

sessionStorage :数据在浏览器关闭后自动删除;

7.移动端事件延迟300毫秒的问题

为什么会有300毫秒的延迟等待时间;这与双击缩放的方案有关;浏览器捕获第一次单击后。会先等待一段时间,如果这段时间里,用户进行了第二次单击操作,则浏览器会进行双击事件处理;如果没有,则进行单击事件的处理。

解决方案1:meta标签禁止缩放

解决方案2:fastclick.js

8.服务器返回状态了解

301,302 重定向;

304 带缓存刷新;

500 服务器错误;

相关文章

  • js面试知识点汇总

    1.什么是闭包?举例说明从作用域链谈闭包闭包就是能够读取其他函数内部变量的函数,闭包实现累加效果 function...

  • 再出发-机器学习

    机器学习: 知识点链接: 面试必备 | 机器学习、深度学习面试知识点汇总[https://mp.weixin.qq...

  • Android面试题汇总

    面试题汇总 Android复习资料——Android知识点汇总(一) 史上最全的Android面试题集锦 ForA...

  • js面试汇总

    13.谈谈垃圾回收机制的方式及内存管理 14.写一个function ,清除字符串前后的空格 15.js实现继承的...

  • iOS最新面试题汇总(四)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(三)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(一)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(二)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • 三年渣渣的诉说!面试大厂Java开发,这10道Spring问题不

    我整理的后端面试解析汇总(已上传Github) Java面试进阶核心知识点笔记地址,欢迎来Star学习! 写在前面...

  • C++面试知识点汇总(原创)

    C++面试知识点汇总(原创) 整理来源:《C++程序设计语言》 Bjarne Stroustrup 存储管理 静态...

网友评论

      本文标题:js面试知识点汇总

      本文链接:https://www.haomeiwen.com/subject/wdgijxtx.html