2019最新前端JavaScript面试题集锦(二)(满满都是干货)

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 = function ()

{

alert('吃饭');

}​;

3、​通过构造函数创建对象。

(1)、使用this关键字​

如:var obj = function (){

this.name ='张三';

this.age = 19;

this.action = function ()

{

alert('吃饭');

}​;

}​

(2)、使用prototype关键字

如:function obj (){}

​       obj.prototype.name ='张三';

​obj.prototype.action=function ()

{

alert('吃饭');

}​;

4、使用内置对象创建对象。

如:var str = new String("实例初始化String");

var str1 = "直接赋值的String";

var func = new Function("x","alert(x)");//示例初始化func

var obj = new Object();//示例初始化一个Object

47.js延迟加载的方式有哪些?

1. defer和async

2. 动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)

3. 按需异步载入js

48.哪些操作会造成内存泄漏?

内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。

垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的 引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么 该对象的内存即可回收。

1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。

2. 闭包

3. 控制台日志

4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

49.判断一个字符串中出现次数最多的字符,统计这个次数

var str = 'asdfssaaasasasasaa';

var json = {};

for (var i = 0; i < str.length; i++) {

        if(!json[str.charAt(i)]){

                json[str.charAt(i)] = 1;

        }else{

                json[str.charAt(i)]++;

        }

};

var iMax = 0;

var iIndex = '';

for(var i in json){

        if(json[i]>iMax){

                iMax = json[i];

                iIndex = i;

        }

}

alert('出现次数最多的是:'+iIndex+'出现'+iMax+'次');

50.写一个获取非行间样式的函数

function getStyle(obj,attr,value)

{

    if(!value)

    {

         if(obj.currentStyle)

         {

             return obj.currentStyle(attr);

         }

         else{

             obj.getComputedStyle(attr,false);

         }

    }   

    else

    {

         obj.style[attr] = value;

    }

}

51.字符串反转,如将 '12345678' 变成 '87654321'

//思路:先将字符串转换为数组 split(),利用数组的反序函数 reverse()颠倒数组,再利 用 jion() 转换为字符串

var str = '12345678';

str = str.split('').reverse().join('');

52.将数字 12345678 转化成 RMB形式 如: 12,345,678

//思路:先将数字转为字符, str= str + '' ;

//利用反转函数,每三位字符加一个 ','最后一位不加; re()是自定义的反转函数,最后再反转回去!

function re(str) {

    str += '';

    return str.split("").reverse().join("");

}

 

function toRMB(num) {

    var tmp='';

    for (var &nbs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值