JavaScript 面试题能否详细解答一下?大家可以一起讨论一下。

1.事件对象在IE与FF中有哪几个共同的属性呢?
2.IE的innerHTML需要注意哪些问题?
3.请指出slice,substr,substring的不同
4.如何判定一个对象是数组(请写出完整的函数)
5.如果动态加载JS文件(请写出完整的函数)
6.用正则取得某个标签里面的innerText
7.请实现javascript 1.8的filter方法
8.将下面URL所带参数全部分解出来,返回一个对象(请写出完整的函数)
%3BS%3Ahttp%3A%2F%2Fwww.cnblogs.com%2F%3BFORID%3A1&hl=zh-CN
9.判定一个字符串是否符合(2012-01-12)这样的日期格式(请写出完整的函数)
10.计算出两个Date对象的相差的日数
按票数排序 按时间排序

5 个回答

张轩前端开发工程师 vikingmute.com

收起
知乎用户、曾晟邓陈华 赞同
我都做了一下 比较长 就不在这里写了 写在我blog里面 想看可以看一下
vikingmute.com/archives
收起

匿名用户

周康康李奇 赞同
JavaScript中String 对象的slice()、substring()、substr()方法都能提取字符串的一部分,但使用时有所区别。

  • stringObject.slice(startIndex,endIndex)

返回字符串 stringObject 从 startIndex 开始(包括 startIndex )到 endIndex 结束(不包括 endIndex )为止的所有字符。
1)参数 endIndex 可选,如果没有指定,则默认为字符串的长度 stringObject.length 。
var stringObject = "hello world!";
alert(stringObject.slice(3)); // lo world!
alert(stringObject.slice(3,stringObject.length)); // lo world!
【注1】字符串中第一个字符的位置是从【0】开始的,最后一个字符的位置为【stringObject.length-1】,所以slice()方法返回的字符串不包括endIndex位置的字符。
2)startIndex 、endIndex 可以是负数。如果为负,则表示从字符串尾部开始算起。即-1表示字符串最后一个字符。
var stringObject = "hello world!";
alert(stringObject.slice(-3)); // ld!
alert(stringObject.slice(-3,stringObject.length)); // ld!
alert(stringObject.slice(-3,-1)); // ld
【注2】合理运用负数可以简化代码
3)startIndex、endIndex 都是可选的,如果都不填则返回字符串 stringObject 的全部,等同于slice(0)
var stringObject = "hello world!";
alert(stringObject.slice()); // hello world!
alert(stringObject.slice(0)); // hello world!

4)如果startIndex、endIndex 相等,则返回空串
【注3】String.slice() 与 Array.slice() 相似

  • stringObject.substring(startIndex、endIndex)

返回字符串 stringObject 从 startIndex 开始(包括 startIndex )到 endIndex 结束(不包括 endIndex )为止的所有字符。
1)startIndex 是一个非负的整数,必须填写。endIndex 是一个非负整数,可选。如果没有,则默认为字符串的长度stringObject.length 。
var stringObject = "hello world!";
alert(stringObject.substring(3)); // lo world!
alert(stringObject.substring(3,stringObject.length)); // lo world!
alert(stringObject.substring(3,7)); // lo w,空格也算在内[l][o][ ][w]

2)如 果startIndex、endIndex 相等,则返回空串。如果startIndex 比 endIndex 大,则提取子串之前,调换两个参数。即stringObject.substring(startIndex,endIndex)等同于 stringObject.substring(endIndex,startIndex)
var stringObject = "hello world!";
alert(stringObject.substring(3,3)); // 空串
alert(stringObject.substring(3,7)); // lo w
alert(stringObject.substring(7,3)); // lo w
【注4】与substring()相比,slice()更灵活,可以接收负参数。

  • stringObject.substr(startIndex,length)

返回字符串 stringObject 从 startIndex 开始(包括 startIndex )指定数目(length)的字符字符。
1)startIndex 必须填写,可以是负数。如果为负,则表示从字符串尾部开始算起。即-1表示字符串最后一个字符。
2)参数 length 可选,如果没有指定,则默认为字符串的长度 stringObject.length 。
var stringObject = "hello world!";
alert(stringObject.substr(3)); // lo world!
alert(stringObject.substr(3,stringObject.length)); // lo world!
alert(stringObject.substr(3,4)); // lo w

3)substr()可以代替slice()和substring()来使用,从上面代码看出 stringObject.substr(3,4) 等同于stringObject.substring(3,7)

【注5】ECMAscript 没有对该方法进行标准化,因此尽量少使用该方法。 显示全部

姜天意西子湖畔的前端

收起
.如何判定一个对象是数组(请写出完整的函数)
Object.prototype.toString.call(arr) === "[object Array]";

动态加载js
document.createElement一个script,之后appendchild进去,ie用script.text
判定yyyymmdd
function isDate(str) {
var reg = /^(\d{4})(-)(\d{2})\2(\d{2})$/ //这个正则写的比较简单
// if(typeof str==string)
if(reg.test(str)){return true}
}
IE的innerHTML需要注意哪些问题?
我记得如果弄样式进去有个不生效的bug,必须触发一下repaint?

杨国春编程,旅行,写作...

收起
有关动态加载JS文件的:
var loadScript = function(url, callback) {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = url;
  if (script.readyState) {
    script.onreadystatechange = function() {
      if (script.readyState == "loaded" || script.readyState == "complete") { 
        script.onreadystatechange = null;
        callback(); 
      }
    };
  } else {
    script.onload = function() { callback(); }; 
  }
  document.body.appendChild(script);
};



from <<Javascript High Performance>>

myjunkbox某公司 CEO 、 前端工程师、 苹果产品爱…

收起
第9题是不是这样比较好?

function checkDate(date) {
"use strict";
if (/\d{4}-\d{2}-\d{2}/.test(date)) {
var _date = new Date(date).toString();

if (_date === "NaN" || _date === "Invalid Date") {
return "Invalid Date";
} else {
return true;
}

} else {
return "Wrong Format";
}

}
62 人关注该问题