2018秋招前端面试题与参考答案总结之 javaScript+jQuery(二)

本文总结了前端面试中关于JavaScript和jQuery的常见问题,包括内存泄漏场景、内置对象、URL参数获取、变量类型检测、this的用法、$(this)与this的区别、$.ajax使用、字符串处理、邮箱格式验证、Ajax优缺点、事件处理等关键知识点,帮助求职者巩固基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 . javaScript+jQuery

1. 举例说明JavaScript内存泄漏的场景,至少3种 

(不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak))

1) 全局变量引起的内存泄漏

一个未声明变量的引用会在全局对象中创建一个新的变量。在浏览器的环境下,全局对象就是 window。

function func(){
    a=123;   //a为全局变量,不会被回收
}

等价于
function func(){
     window.a=123;   //a为全局变量,不会被回收
}

为了防止这种错误的发生,可以在你的 JavaScript 文件开头添加 'use strict'; 语句

2)闭包引起的内存泄漏

(function(){
     var a=123;
     return function(){ console.log(a) };
})()

3)定时器或回调函数引起的内存泄漏

当不需要setInterval或者setTimeout时,定时器没有被clear,定时器的回调函数以及内部依赖的变量都不能被回收,造成内存泄漏。

function func(){
    var i=0;
    var timer=setTimeout(function(){
         console.log(i++);
    },1000);
}
func();

4)dom清空或删除时,事件未清除导致的内存泄漏

<div id="container"> 

</div>

$('#container').bind('click', function(){
    console.log('click');
}).remove();

// zepto 和原生 js下,#container dom 元素,还在内存里jquery 的 empty和 remove会帮助开发者避免这个问题


<div id="container"> 

</div>

$('#container').bind('click', function(){
    console.log('click');
}).off('click').remove();

//把事件清除了,即可从内存中移除

2. js常用内置对象

Number对象、String对象、Array对象、Date对象、Math对象、正则表达式对象、Function对象

3. 你如何获取浏览器URL中查询字符串中的参数?

测试地址:http://xxx.xxxx.xx/kt?channelid=123&name=xiaoming&age=23

方法一:

function getURL(){
    var URL = window.location.href;  //获取地址栏的地址
    var arg = URL.split('?');
    if(arg[0] == URL){  //无参数
        return "";
    }

    //对?后面的参数进行处理
    var arr = arg[1].split('&');
    var params = {};
    for(var i = 0;i< arr.length;i++){
        var p = arr[i].split('=');
        params[arg[0]] = p[1];
    }
    return params;
}

var url = getURL(); // obj
console.log(url['age']); // 打印结果:23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值