• js、jquery面试题总结


    1.javascript的typeof返回哪些数据类型.
    答案:string,boolean,number,undefined,function,object

    检测数据数据类型的方式 
    2.例举3种强制类型转换和2种隐式类型转换?
    答案:强制(parseInt,parseFloat,number)
    隐式(== ===) 还有判断是null “” undefined 0 会转换成false 1会转换成true
    3.split() join()的区别
    答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串
    4.数组方法pop()push()unshift()shift()
    答案:push()尾部添加pop()尾部删除
    unshift()头部添加shift()头部删除
    5.IE和标准下有哪些兼容性的写法
    答案:
    var ev=ev||window.event
    document.documentElement.clientWidth||document.body.clientWidth
    Vartarget=ev.srcElement||ev.target

    var scrollTop = windows.scrollTop || document.documentElement.scrollTop

    6.ajax请求的时候get和post方式的区别
    答案:
    一个在url后面,一个放在虚拟载体里面
    get有大小限制(只能提交少量参数)
    安全问题
    应用不同,请求数据和提交数据
    7.call和apply的区别
    答案:
    Object.call(this,obj1,obj2,obj3)
    Object.apply(this,arguments)
    1
    2
    8.ajax请求时,如何解析json数据
    答案:使用JSON.parse  
    9.事件委托是什么
    答案:利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
    10.闭包是什么,有什么特性,对页面有什么影响
    答案:闭包就是能够读取其他函数内部变量的函数,使得函数不被GC回收,如
    果过多使用闭包,容易导致内存泄露
    11.如何阻止事件冒泡
    答案:ie:阻止冒泡ev.cancelBubble=true;非IEev.stopPropagation();
    12.如何阻止默认事件
    答案:(1)return false;(2)ev.preventDefault(); (3)IE兼容写法 e.returnValue = false;
    13.添加删除替换插入到某个接点的方法
    答案:
    1)创建新节点
    createElement()//创建一个具体的元素
    createTextNode()//创建一个文本节点
    2)添加、移除、替换、插入
    appendChild()//添加
    removeChild()//移除
    replaceChild()//替换
    insertBefore()//插入 每个元素的前面增加
    3)查找
    getElementsByTagName()//通过标签名称
    getElementsByName()//通过元素的Name属性的值
    getElementById()//通过元素Id,唯一性
    14.解释jsonp的原理,以及为什么不是真正的ajax
    答案:动态创建script标签,回调函数
    Ajax是页面无刷新请求数据操作
    15.window.load和document.ready的区别
    答案:window.onload是在结构和样式,外部js以及图片加载完(即页面加载完成之后)才执行js
    document.ready是dom树创建完成就执行(即documnet文档加载完成)的方法,原生种没有这个方法,
    jquery中有$().ready(function)
    16.””和“=”的不同
    答案:前者会自动转换类型,再判断是否相等
    后者不会自动类型转换,直接去比较 (=是赋值运算符)
    17.函数声明与函数表达式的区别?
    在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式
    并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可
    用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,
    才会真正被解析执行。
    18.对作用域上下文和this的理解,看下列代码:
    varUser={
    count:1,
    getCount:function(){
    returnthis.count;
    }
    };
    console.log(User.getCount());//this指向的是当前对象
    varfunc=User.getCount;//func是一个普通函数了
    console.log(func());//普通函数的this指向是windows,局部变量没有定义返回undefined
    问两处console输出什么?为什么?
    答案:是1和undefined。
    func是在window的上下文中被执行的,所以不会访问到count属性。
    19.看下面代码,给出输出结果。
    for(vari=1;i<=3;i++){//建议使用let可正常输出i的值
    setTimeout(function(){
    console.log(i);
    },0);//定时器在for循环之后运行。
    };

    答案:444。
    原因:Javascript事件处理器在线程空闲之前不会运行。
    20.当一个DOM节点被点击时候,我们希望能够执行一
    个函数,应该怎么做?
    box.onclick=function(){}
    box.addEventListener("click",function(){},false);//二级事件,可以绑定多个事件

    box.attachEvent()//IE兼容 绑定事件


    21.Javascript的事件流模型都有什么?
    “事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
    “事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的
    “DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
    22.看下列代码,输出什么?解释原因。
    var a=null;
    alert(typeofa);
    1
    2
    答案:object
    解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对
    象,所以用typeof检测会返回”object”。
    23.判断字符串以字母开头,后面可以是数字,下划线,
    字母,长度为6-30
    varreg=/^[a-zA-Z]w{5,29}$/;
    1
    24.回答以下代码,alert的值分别是多少?
    <script>
    var a=100;
    functiontest(){
    alert(a);
    a=10;//去掉了var就变成定义了全局变量了
    alert(a);
    }
    test();
    alert(a);
    </script>

    扩展:

    1.检测数据类型的方式案例object.prototype.toString.call()
    (1)typeof(该变量) 返回数据类型    (2)instantofvar arr = []; arr instanceof Array    返回true和false
    (3)curstructor var arr = []; arr.constructor === Array;返回true和false (4)object.prototype.toString.call()
    ⒉数组的常用方法字符串常用方法 join split splice slice区别
    (1)、slice  slice() 可用于数组与字符串,返回一个新的数组,原数组不改变,包含从 start 到 end (不包括该元素)的元素。返回一个新的数组,
    start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。
    end  可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
    (2)、splice  splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。会改变原始数组。它可以用于插入、删除或替换数组的元素。
    参数至少两个,index为必选项,表示操作数组的起始位置,负数表示从倒数开始。
    howmany为必选项,表示从起始位置开始要替换或删除几个元素。如果设置为 0,则不会删除项目。
    第三个及以上 item(包括item1、item2...)可选。向数组添加的新项目。有则替换没有则表示删除。
    (3)、split 用于把一个字符串分割成字符串数组,可用于数组与字符串,返回一个字符串数组。
    split(separator,howmany)separator是必选项。表示分割字符串的符号。howmany为可选项,表示分割后返回的结果长度。
    (4)、join(separator) 方法用于把数组中的所有元素放入一个字符串
    separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
    3.阻止事件的冒泡兼容写法
        if(document.all){  //只有ie识别
            e.cancelBubble=true;
        }else{
            e.stopPropagation();
        }
    4.addEventListener绑定事件的参数,附带案例attachEvent
    addEventListener("click",function(){},true);
    第一个参数是事件类型
    第二个参数就是事件函数
    第三个参数 true时捕获,false时冒泡。

  • 相关阅读:
    caffe BUG
    Ubuntu安装低版本gcc
    OpenCV的CV :: findHomography运行时错误
    opencv中使用 SURF算法匹配的遇到的问题
    C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法 --转
    SIFI与surf
    opencv复习
    opencv老版本的IplImage使用
    python学习笔记-对象持久化保存与恢复
    Styles and Themes
  • 原文地址:https://www.cnblogs.com/guirong/p/13500111.html
Copyright © 2020-2023  润新知