2019最新出炉 js面试题 都是精华内容

  1. foo = foo||bar ,这行代码是什么意思?为什么要这样写?

如果foo存在,值不变,否则把bar的值赋给foo。

短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时, 只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。

  1. 看下列代码,将会输出什么?(变量声明提升)

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引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。

 

 

 

  1. js实现随机选取10–100之间的10个数字,存入一个数组,并排序。

function randomNub(aArray, len, min, max) {

               if (len >= (max - min)) {

                   return '超过' + min + '-' + max + '之间的个数范围' + (max - min - 1) + '个的总数';

               }

               if (aArray.length >= len) {

                   aArray.sort(function(a, b) {

                       return a - b

                   });

                   return aArray;

               }

               var nowNub = parseInt(Math.random() * (max - min - 1)) + (min + 1);

               for (var j = 0; j < aArray.length; j++) {

                   if (nowNub == aArray[j]) {

                       randomNub(aArray, len, min, max);

                       return;

                   }

               }

               aArray.push(nowNub);

               randomNub(aArray, len, min, max);

               return aArray;

                 

                 var arr=[];

                 randomNub(arr,10,10,100);

 

 

34.把两个数组合并,并删除第二个元素。

var array1 = ['a','b','c'];

var bArray = ['d','e','f'];

var cArray = array1.concat(bArray);

cArray.splice(1,1);

35.有这样一个URLhttp://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:1, b:2, c:, d:xxx, e:undefined}

function serilizeUrl(url) {

    var urlObject = {};

    if (/\?/.test(url)) {

        var urlString = url.substring(url.indexOf("?") + 1);

        var urlArray = urlString.split("&");

        for (var i = 0, len = urlArray.length; i < len; i++) {

            var urlItem = urlArray[i];

            var item = urlItem.split("=");

            urlObject[item[0]] = item[1];

        }

        return urlObject;

    }

    return null;

}

36.正则表达式构造函数var reg=new RegExp(xxx)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式?

当使用RegExp()构造函数的时候,不仅需要转义引号(即\”表示”),并且还需要双反斜杠(即\\表示一个\)。使用正则表达字面量的效率更高。 

邮箱的正则匹配:

    var regMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

37.写一个function,清除字符串前后的空格。

if (!String.prototype.trim) {

    String.prototype.trim = function() {

    return this.replace(/^\s+/, "").replace(/\s+$/,"");

 }

}

//测试 

var str = " \t\n test string ".trim();

alert(str == "test string"); // alerts "true"

38.以下两个变量aba+b的哪个结果是NaN

A、var a=undefined; b=NaN

B、var a= ‘123’; b=NaN

C、var a =undefined , b =NaN

D、var a=NaN , b='undefined'

39.下面的JavaScript语句中,( )实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空

form name属性为forms

A. for(vari=0;i< form1.elements.length;i++) {

if(form1.elements.type==”text”)

form1.elements.value=”";}

B. for(vari=0;i<document.forms.length;i++) {

if(forms[0].elements.type==”text”)

forms[0].elements.value=”";

}

C. if(document.form.elements.type==”text”)

form.elements.value=”";

D. for(vari=0;i<document.forms.length; i++){

for(var j=0;j<document.forms.elements.length; j++){

if(document.forms.elements[j].type==”text”)

document.forms.elements[j].value=”";

}

}

40.typeof运算符返回值中有一个跟javascript数据类型不一致,它是如何判断是不是数组?

ArrayArray.isArray(data)

41.写出函数DateDemo的返回结果,系统时间假定为今天

function DateDemo(){

 var d, s="今天日期是:";

 d = new Date();

s += d.getMonth() +1+ "/";

s += d.getDate() + "/";

s += d.getFullYear();

return s;

}

结果:今天日期是:7/21/2016

 

42.写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉

var str = “<div>这里是div<p>里面的段落</p></div>”;

<script type=”text/javascript”>

var reg = /<\/?\w+\/?>/gi;

var str = “<div>这里是div<p>里面的段落</p></div>”;

alert(str.replace(reg,”"));

</script>

43.截取字符串abcdefgefg

alert('abcdefg'.substring(4));

44.简述创建函数的几种方式

第一种(函数声明): 

function sum1(num1,num2){

   return num1+num2;

}

第二种(函数表达式):

var sum2 = function(num1,num2){

   return num1+num2;

}

第三种(函数对象方式):

var sum3 = new Function("num1","num2","return num1+num2");

45.Javascript如何实现继承?

1.构造继承法

2.原型继承法

3.实例继承法

46.Javascript创建对象的几种方式?

1、var obj = {};(使用json创建对象)

如:obj.name = '张三';​

obj.action = function ()

{

alert('吃饭');

}​;

2、var obj = new Object();(使用Object创建对象)

如:obj.name = '张三';​

obj.action =

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值