js面试代码题

本文整理了1-51道JavaScript面试中的代码题目,涵盖了数组判断、输入框取值、DOM操作、数组去重、事件绑定等多个方面,旨在帮助读者理解和掌握JavaScript的基本语法和常用技巧。题目包括对变量是否为数组的判断、获取输入框值、查找页面中所有checkbox、设置div内容和颜色、DOM节点点击事件绑定、数组去重方法、字符串替换、日期格式化、正则替换、转义特殊字符、异步加载JS方案、页面JS加载完全的保证、字符串扩展、身份证号码验证、非行间样式获取等。
摘要由CSDN通过智能技术生成
题目和答案来源于网络,不保证答案的准确性哦!
1、如何判断某变量是否为数组数据类型?
 方法一.判断其是否具有“数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效
 方法二.obj instanceof Array 在某些IE版本中不正确
 方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下:
 if(typeof Array.isArray==="undefined")
 {
   Array.isArray = function(arg){
         return Object.prototype.toString.call(arg)==="[object Array]"
     };  
 }
2、已知ID的Input输入框,希望获取这个输入框的输入值,怎么做?
 document.getElementById(“ID”).value
3、希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
 var domList = document.getElementsByTagName(‘input’)
 var checkBoxList = [];
 var len = domList.length;  //缓存到局部变量
 while (len--) {  //使用while的效率会比for循环更高
   if (domList[len].type == ‘checkbox’) {
       checkBoxList.push(domList[len]);
   }
 }
4、设置一个已知ID的DIV的html内容为xxxx,字体颜色设置为黑色(不使用第三方框架)
 var dom = document.getElementById(“ID”);
 dom.innerHTML = “xxxx”
 dom.style.color = “#000”
5、当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?
  ①直接在DOM里绑定事件:<E οnclick=”test()”></E>;
 ②在JS里通过onclick绑定:xxx.onclick = test;
 ③通过事件添加进行绑定:xxx.addEventListener('click',test, false);
                         IE:xxx.attachEvent('onclick', test);
6、编写一个数组去重的方法 ,数组排序
①Array.prototype.unique1 = function () {
    var n = []; //一个新的临时数组
    for (var i = 0; i < this.length; i++) //遍历当前数组
    {
     //如果当前数组的第i已经保存进了临时数组,那么跳过,
     //否则把当前项push到临时数组里面
      if (n.indexOf(this[i]) == -1){
n.push(this[i]);
      } 
   }
  return n;
 }
②Array.prototype.unique2 = function()
{
    var n = {},r=[]; //n为hash表,r为临时数组
    for(var i = 0; i < this.length; i++) //遍历当前数组
    {
        if (!n[this[i]]) //如果hash表中没有当前项
        {
            n[this[i]] = true; //存入hash表
            r.push(this[i]); //把当前数组的当前项push到临时数组里面
        }
    }
    return r;
}
③Array.prototype.unique3 = function()
{
    var n = [this[0]]; //结果数组
    for(var i = 1; i < this.length; i++) //从第二项开始遍历
    {
        //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
        //那么表示第i项是重复的,忽略掉。否则存入结果数组
        if (this.indexOf(this[i]) == i){
 n.push(this[i]);
}
    }
    return n;
}
7、看代码给答案。
 var a = new Object();
 a.value = 1;
 b = a;
 b.value = 2;
 alert(a.value);
答案:2(考察引用数据类型细节)
8、已知数组var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert出”This is Baidu Campus”。
 答案:alert(stringArray.join(“”))
9、输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26
 var d = new Date();
 var year = d.getFullYear();
 var month = d.getMonth() + 1;
 month = month < 10 ? '0' + month : month;   // 变成两位
 var day = d.getDate();
 day = day < 10 ? '0' + day : day;
 alert(year + '-' + month + '-' + day);
10、将字符串“<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替换成10,{$name}替换成Tony (使用正则表达式
 答案:“<tr><td>{$id}</td><td>{$id}_{$name}</td</tr>”.replace(/{\$id}/g,’10’).replace(/{\$name}/g, ‘Tony’);
11、为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将<, >, &, “进行转义
 function escapeHtml(str) {
 return str.replace(/[<>”&]/g, function(match) {
     switch (match) {
             case “<”:
                   return “&lt;”;
             case “>”:
                   return “&gt;”;
             case “&”:
                   return “&amp;”;
              case “\””:
                   return “&quot;”;
       }
   });
 }
12、foo = foo||bar ,这行代码是什么意思?为什么要这样写?
 答案:if(!foo) foo = bar; //如果foo存在,值不变,否则把bar的值赋给foo。
 短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。
13、看下列代码,将会输出什么?(变量声明提升)
 var foo = 1;
 function(){
     console.log(foo);
     var foo = 2;
     console.log(foo);
 }
 答案:输出undefined 和 2。上面代码相当于:
 var foo = 1;
 function(){
     var foo;
     console.log(foo); //undefined
     foo = 2;
     console.log(foo); // 2;   
 }
 函数声明与变量声明会被JavaScript引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。
14、用js实现随机选取10–100之间的10个数字,存入一个数组,并排序。
 var iArray = []; 
 funtion getRandom(istart, iend){
         var iChoice = istart - iend +1;
         return Math.floor(Math.random() * iChoice + istart;
 }
 for(var i=0; i<10; i++){
         iArray.push(getRandom(10,100));
 }
 iArray.sort();
15、把两个数组合并,并删除第二个元素。
 var array1 = ['a','b','c'];
 var bArray = ['d','e','f'];
 var cArray = array1.concat(bArray);
 cArray.splice(1,1);
16、请实现,鼠标点击页面中的任意标签,alert 该标签的名称(注意兼容性)
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>alert标签名</title>
</head>
<body>
    <div class="alert">div</div>
    <a href="javascript:;" class='alert'>a</a>
    <b class="alert">b</b>
    <script>
        function WClassName(className){
            if(document.getElementsByClassName){
                return document.getElementsByClassName(className);
            }else{
                var tag= document.getElementsByTagName("*");
                     var lengths=tag.length;
                var divs=[];
                for (var i=0; i<lengths; i++) {
                        if(tag[i].className==className){
                               divs.push(tag[i])
                        }
                    }
                return divs;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值