Files
daily/interview/javascript.md
T
2019-07-16 16:28:04 +08:00

12 KiB
Raw Blame History

1、JavaScript的变量名在定义时需要遵守哪些规则? 2、不能被encodeURIComponent()函数编码的字符有哪些? 3、如何获得Select元素(选择框)中选中项的索引? 4、JavaScript的内置对象有哪些。 5、如何为一个<p>元素添加CSS类primary 6、与鼠标相关的事件有哪些? 7、如何通过jQuery的方式获得代码中单选框的选中值。 8、执行下面的代码,在控制台输出的x为__________y为__________。

var x = 0, y = 0;
x
++
y
console.log(x, y);

9、调用下面代码中的函数,最终返回的结果为__________。

function isArray() {
  return
  true;
}
isArray();

10、执行下面的代码后,在控制台输出的y为__________。

var y,
  x = 1;
y = x+++x;

11、2+true等于__________'6'+9等于__________。 12、4+3+2+"1"等于__________"1"+2+4等于__________。 13、(1, 5 - 1) * 2 等于__________。 14、执行下面的代码后,在控制台输出的y为__________。

var x = "1", y;
switch (x) {
  case 1:
    y = 1;
    break;
  case 2:
    y = 2;
    break;
  default:
    y = 0;
}
console.log(y);

15、!function(){}的返回值是__________。 16、7 - "a"等于__________7 / 0等于__________。 17、3..toFixed(2)得到的结果为__________。 18、parseFloat('12.3.4')返回的结果为__________。 19、Number(012)返回的结果为__________Number("0xA")返回的结果为__________。 20、在下面的代码中,Number()函数的参数是一个对象,最终的结果为__________。

var numberObj = {
  valueOf: function() {
    return {};
  },
  toString: function() {
    return "10";
  }
};
Number(numberObj);

21、~{}等于__________~1.25等于__________。 22、以下代码最终在控制台输出的结果为__________。

var a = {},
  b = { name: "ping" },
  c = { name: "wen" };
a[b] = 10;
a[c] = 20;
console.log(a[b]);

23、[] == ![]得到的结果为__________。 24、[] + {}得到的结果为__________{} + []得到的结果为__________。 25、Array.prototype.isPrototypeOf([1, 2])的结果为__________。 26、下面代码最终的打印结果是__________。

var obj1 = {
  names: []
};
var obj2 = obj1.names;
obj2.push("strick");
console.log(obj1.names);

27、在下面的代码中,调用了三次test()方法,得到的结果分别是__________、__________ 和__________。

var str = "pw1",
  pattern1 = /\d/,
  pattern2 = /\d/g;
pattern1.test(str);
pattern2.test(str);
pattern2.test(str);

28、执行下面的代码后,arr1.length为__________。

var arr1 = "ping".split(""),
  arr2 = arr1.reverse(),
  arr3 = "pw".split("");
arr2.push(arr3);

29、执行下面的代码后,arr数组的值为__________。

var arr = [4, 1, 5, 2, 3];
arr.sort(function(a, b) {
  return a > b;
});

30、[1, 2, 3, 4, 5].splice(-2)的值为__________。 31、[1, 2, 3, 4, 5].slice(NaN, 1)的值为__________。 32、下面代码执行后,在控制台会输出b变量,得到的结果是__________。

(function() {
  var a = b = 5;
})();
console.log(b);

33、1 instanceof Number的返回值是__________2 in [1,2]的返回值是__________。 34、typeof undefined的返回值是__________typeof null的返回值是__________。 35、将Object的toString()方法分别应用于null和undefined(如下所示),得到的结果为__________和__________。

var toString = Object.prototype.toString;
toString.call(null);
toString.call(undefined);

36、执行下面的代码,结果的输出顺序是__________、__________、 __________。

console.log(1);
setTimeout(function() {
  console.log(2);
}, 0);
console.log(3);

37、请简单描述一下你对JavaScript的理解。 38、JavaScript有哪些优势和劣势? 39、相等(==)和全等(===)运算符有哪些区别? 40、在JavaScript中,字面量是指什么? 41、分号会在什么时候自动补全?自动补全有什么弊端? 42、什么是严格模式?严格模式有哪些限制? 43、undefined和null的有哪些异同? 44、请说明JavaScript中的原生对象(native objects)和宿主对象(host objects)。 45、全局函数eval()有什么作用? 46、请简单描述一下你所理解的原型链。 47、用new运算符创建对象时,例如new Fn(),具体的创建过程有哪几步? 48、JSON格式的数据与XML格式的数据相比,有哪些优势? 49、函数声明和函数表达式有哪些区别? 50、Function构造器有哪些功能? 51、执行下面的代码,为何输出的都是3

for (var i = 0; i < 3; i++) {
  setTimeout(function() {
    console.log(i);
  }, 0);
}

52、请谈谈你对闭包的理解。 53、什么是事件循环? 54、如果一个全局变量没有事先声明,那么在控制台能否输出它的值? 55、如何用脚本获取当前显示器的分辨率? 56、document.write()和innerHTML有哪些区别? 57、请介绍一下DocumentFragment类型的节点。 58、HTML元素的特性和属性是怎么定义的? 59、jQuery有哪些特色? 60、在jQuery中有哪些方法可以删除元素。 61、jQuery UI是什么? 62、请用JavaScript实现冒泡排序。 63、请实现一个遍历至100的循环,在能被3整除时输出“three”,在能被5整除时输出 “five”,在能同时被3和5整除时输出“all”。 64、封装一个isInteger()函数,用于检测传入的值是整数。 65、请重新封装一个isNaN2()函数,此函数弥补了全局函数isNaN()的不足。 66、编写一个函数,能让两个并不大的小数正确相乘。 67、统计字符串“xxxxyyydda”中每个字母出现的次数。 68、执行a == 1 && a == 2 && a == 3,返回的结果是true,那么a的值是什么? 69、如何判断对象中的某个属性是继承而来的? 70、如何用JavaScript实现对象继承? 71、怎么实现深拷贝? 72、在网页中实现一个倒计时,能够动态显示“××天××时××分××秒” 。 73、请用多种方式获取当前时间的毫秒数。 74、如何判断某一年是闰年? 75、如何计算两个日期相隔的天数? 76、请编写一个格式化字符串的函数,例如传入“我的名字叫{0}”和“strick”,返回“我的名字叫strick”。 77、用JavaScript封装一个函数,可实现整数的千分位逗号分隔符(不用考虑小数),例如12345用12,345表示。 78、编写一个函数,用于清除字符串前后的空格。 79、如何将字符串“get-element-by-id”转化成驼峰表示法的“getElementById”? 80、用数组方法把数组中的元素(假设元素值都是数字)加起来,得到的和赋给result变量。 81、不用循环语句(for、while等)创建一个长度为50的数组,每个元素的值等于它的索引。 82、设计一个函数能够补全整数的前置零,例如为3补全两个前置零,得到的结果为“003”。 83、有一个数组,其值为[1,[2,[3,4,2],2],5,[6]],如何才能输出[1,2,3,4,2,2,5,6] 84、请封装一个函数,用于判断某个数是否是质数。 85、请封装一个函数,可序列化URL中的查询字符串,也就是把字符串转换为一个包含所有参数的对象。 86、设计一个函数,用于判断一个HTML元素是另一个HTML元素的后代。 87、创建一个<dd>元素,设置该元素的内容为4,并插入到id属性为“third”的<dd>元素之前。要求用DOM方法实现。 88、如何动态的添加外部脚本? 89、用多种方式为一个

元素设置一个名为ui-border的CSS类。 90、请封装一个函数,模拟getBoundingClientRect()方法,但只要返回元素到视口顶部(top)和左边(left)的距离。 91、如何禁用HTML文档中的提交按钮? 92、用JavaScript为HTML元素设置两个CSS属性:字体大小和宽度,把字体大小设为18px,宽度设为100px,请用多种方式实现。 93、有一个div元素,其宽度设为了百分数,如何用JavaScript获得经过计算后的真正宽度? 94、如何用JavaScript隐藏一个按钮? 95、假设有一个按钮,如何在点击类型的事件处理程序中阻止事件传播。 96、请封装一个注册事件的函数,要求能够跨浏览器运行。 97、什么是事件委托?请用一个例子来描述委托? 98、不使用第三方类库,用DOM方法读取复选框中选中的值。 99、用多种方式移除选择框(Select元素)中的选项(Option元素)。 100、如何用