Skip to content

Latest commit

 

History

History
368 lines (350 loc) · 20.2 KB

javascript.md

File metadata and controls

368 lines (350 loc) · 20.2 KB
  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);
  1. 调用下面代码中的函数,最终返回的结果为__________。
function isArray() {
  return
  true;
}
isArray();
  1. 执行下面的代码后,在控制台输出的y为__________。
var y,
  x = 1;
y = x+++x;
  1. 2+true等于__________,'6'+9等于__________。
  2. 4+3+2+"1"等于__________,"1"+2+4等于__________。
  3. (1, 5 - 1) * 2 等于__________。
  4. 执行下面的代码后,在控制台输出的y为__________。
var x = "1", y;
switch (x) {
  case 1:
    y = 1;
    break;
  case 2:
    y = 2;
    break;
  default:
    y = 0;
}
console.log(y);
  1. !function(){}的返回值是__________。
  2. 7 - "a"等于__________,7 / 0等于__________。
  3. 3..toFixed(2)得到的结果为__________。
  4. parseFloat('12.3.4')返回的结果为__________。
  5. Number(012)返回的结果为__________,Number("0xA")返回的结果为__________。
  6. 在下面的代码中,Number()函数的参数是一个对象,最终的结果为__________。
var numberObj = {
  valueOf: function() {
    return {};
  },
  toString: function() {
    return "10";
  }
};
Number(numberObj);
  1. ~{}等于__________,~1.25等于__________。
  2. 以下代码最终在控制台输出的结果为__________。
var a = {},
  b = { name: "ping" },
  c = { name: "wen" };
a[b] = 10;
a[c] = 20;
console.log(a[b]);
  1. [] == ![]得到的结果为__________。
  2. [] + {}得到的结果为__________,{} + []得到的结果为__________。
  3. Array.prototype.isPrototypeOf([1, 2])的结果为__________。
  4. 下面代码最终的打印结果是__________。
var obj1 = {
  names: []
};
var obj2 = obj1.names;
obj2.push("strick");
console.log(obj1.names);
  1. 在下面的代码中,调用了三次test()方法,得到的结果分别是__________、__________ 和__________。
var str = "pw1",
  pattern1 = /\d/,
  pattern2 = /\d/g;
pattern1.test(str);
pattern2.test(str);
pattern2.test(str);
  1. 执行下面的代码后,arr1.length为__________。
var arr1 = "ping".split(""),
  arr2 = arr1.reverse(),
  arr3 = "pw".split("");
arr2.push(arr3);
  1. 执行下面的代码后,arr数组的值为__________。
var arr = [4, 1, 5, 2, 3];
arr.sort(function(a, b) {
  return a > b;
});
  1. [1, 2, 3, 4, 5].splice(-2)的值为__________。
  2. [1, 2, 3, 4, 5].slice(NaN, 1)的值为__________。
  3. 下面代码执行后,在控制台会输出b变量,得到的结果是__________。
(function() {
  var a = b = 5;
})();
console.log(b);
  1. 1 instanceof Number的返回值是__________,2 in [1,2]的返回值是__________。
  2. typeof undefined的返回值是__________,typeof null的返回值是__________。
  3. 将Object的toString()方法分别应用于null和undefined(如下所示),得到的结果为__________和__________。
var toString = Object.prototype.toString;
toString.call(null);
toString.call(undefined);
  1. 执行下面的代码,结果的输出顺序是__________、__________、 __________。
console.log(1);
setTimeout(function() {
  console.log(2);
}, 0);
console.log(3);
  1. 请简单描述一下你对JavaScript的理解。
  2. JavaScript有哪些优势和劣势?
  3. 相等(==)和全等(===)运算符有哪些区别?
  4. 在JavaScript中,字面量是指什么?
  5. 分号会在什么时候自动补全?自动补全有什么弊端?
  6. 什么是严格模式?严格模式有哪些限制?
  7. undefined和null的有哪些异同?
  8. 请说明JavaScript中的原生对象(native objects)和宿主对象(host objects)。
  9. 全局函数eval()有什么作用?
  10. 请简单描述一下你所理解的原型链。
  11. 用new运算符创建对象时,例如new Fn(),具体的创建过程有哪几步?
  12. JSON格式的数据与XML格式的数据相比,有哪些优势?
  13. 函数声明和函数表达式有哪些区别?
  14. Function构造器有哪些功能?
  15. 执行下面的代码,为何输出的都是3?
for (var i = 0; i < 3; i++) {
  setTimeout(function() {
    console.log(i);
  }, 0);
}
  1. 请谈谈你对闭包的理解。
  2. 什么是事件循环?
  3. 如果一个全局变量没有事先声明,那么在控制台能否输出它的值?
  4. 如何用脚本获取当前显示器的分辨率?
  5. document.write()和innerHTML有哪些区别?
  6. 请介绍一下DocumentFragment类型的节点。
  7. HTML元素的特性和属性是怎么定义的?
  8. jQuery有哪些特色?
  9. 在jQuery中有哪些方法可以删除元素。
  10. jQuery UI是什么?
  11. 请用JavaScript实现冒泡排序。
  12. 请实现一个遍历至100的循环,在能被3整除时输出“three”,在能被5整除时输出 “five”,在能同时被3和5整除时输出“all”。
  13. 封装一个isInteger()函数,用于检测传入的值是整数。
  14. 请重新封装一个isNaN2()函数,此函数弥补了全局函数isNaN()的不足。
  15. 编写一个函数,能让两个并不大的小数正确相乘。
  16. 统计字符串“xxxxyyydda”中每个字母出现的次数。
  17. 执行a == 1 && a == 2 && a == 3,返回的结果是true,那么a的值是什么?
  18. 如何判断对象中的某个属性是继承而来的?
  19. 如何用JavaScript实现对象继承?
  20. 怎么实现深拷贝?
  21. 在网页中实现一个倒计时,能够动态显示“××天××时××分××秒” 。
  22. 请用多种方式获取当前时间的毫秒数。
  23. 如何判断某一年是闰年?
  24. 如何计算两个日期相隔的天数?
  25. 请编写一个格式化字符串的函数,例如传入“我的名字叫{0}”和“strick”,返回“我的名字叫strick”。
  26. 用JavaScript封装一个函数,可实现整数的千分位逗号分隔符(不用考虑小数),例如12345用12,345表示。
  27. 编写一个函数,用于清除字符串前后的空格。
  28. 如何将字符串“get-element-by-id”转化成驼峰表示法的“getElementById”?
  29. 用数组方法把数组中的元素(假设元素值都是数字)加起来,得到的和赋给result变量。
  30. 不用循环语句(for、while等)创建一个长度为50的数组,每个元素的值等于它的索引。
  31. 设计一个函数能够补全整数的前置零,例如为3补全两个前置零,得到的结果为“003”。
  32. 有一个数组,其值为[1,[2,[3,4,2],2],5,[6]],如何才能输出[1,2,3,4,2,2,5,6]?
  33. 请封装一个函数,用于判断某个数是否是质数。
  34. 请封装一个函数,可序列化URL中的查询字符串,也就是把字符串转换为一个包含所有参数的对象。
  35. 设计一个函数,用于判断一个HTML元素是另一个HTML元素的后代。
  36. 创建一个<dd>元素,设置该元素的内容为4,并插入到id属性为“third”的<dd>元素之前。要求用DOM方法实现。
  37. 如何动态的添加外部脚本?
  38. 用多种方式为一个<div>元素设置一个名为ui-border的CSS类。
  39. 请封装一个函数,模拟getBoundingClientRect()方法,但只要返回元素到视口顶部(top)和左边(left)的距离。
  40. 如何禁用HTML文档中的提交按钮?
  41. 用JavaScript为HTML元素设置两个CSS属性:字体大小和宽度,把字体大小设为18px,宽度设为100px,请用多种方式实现。
  42. 有一个div元素,其宽度设为了百分数,如何用JavaScript获得经过计算后的真正宽度?
  43. 如何用JavaScript隐藏一个按钮?
  44. 假设有一个按钮,如何在点击类型的事件处理程序中阻止事件传播。
  45. 请封装一个注册事件的函数,要求能够跨浏览器运行。
  46. 什么是事件委托?请用一个例子来描述委托?
  47. 不使用第三方类库,用DOM方法读取复选框中选中的值。
  48. 用多种方式移除选择框(Select元素)中的选项(Option元素)。
  49. 如何用<iframe>元素实现无刷新文件上传。
  50. HTML5新增了FileReader对象,如何利用这个对象来读取上传按钮中选择的文件?
  51. 不借助第三方类库,请实现一次简单的Ajax请求。
  52. 请解释JSONP的工作原理,并用代码描述其过程。
  53. 如何用jQuery来创建插件?
  54. 两次输出各是什么?
     for (var i = 0; i < 3; i++) {
       setTimeout(() => console.log(i), 1)
     }
     
     for (let i = 0; i < 3; i++) {
       setTimeout(() => console.log(i), 1)
     }
  1. 下面代码的输出是什么?
function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const lydia = new Person("Lydia", "Hallie");
const sarah = Person("Sarah", "Smith");

console.log(lydia);
console.log(sarah);
  1. 当我们这样做时会发生什么?
function bark() {
  console.log("Woof!");
}
bark.animal = "dog";
  1. 事件传播的三个阶段是什么?

  2. 所有对象都有原型,这句描述是否正确?

  3. 下面代码的输出是什么?

let number = 0;
console.log(number++);
console.log(++number);
console.log(number);
  1. 下面代码的输出是什么?
function checkAge(data) {
  if (data === { age: 18 }) {
    console.log("You are an adult!");
  } else if (data == { age: 18 }) {
    console.log("You are still an adult.");
  } else {
    console.log(`Hmm.. You don't have an age I guess`);
  }
}
checkAge({ age: 18 });
  1. 下面代码的输出是什么?
function getAge() {
  "use strict";
  age = 21;
  console.log(age);
}
getAge();
  1. cool_secret可以访问多长时间?
sessionStorage.setItem("cool_secret", 123);
  1. JavaScript全局执行上下文为你创建了全局对象和this关键字,这句话是否正确?
  2. 单击按钮时event.target指向的是哪个元素?
<div onclick="console.log('first div')">
  <div onclick="console.log('second div')">
    <button onclick="console.log('button')">
      Click!
    </button>
  </div>
</div>
  1. 单击下面的html片段打印的内容是什么?
<div onclick="console.log('div')">
  <p onclick="console.log('p')">
    Click here!
  </p>
</div>
  1. 下面这些值哪些是假值?
0;
new Number(0);
("");
(" ");
new Boolean(false);
undefined;
  1. 前端的requestAnimationFrame了解吗?有使用过吗?请说一下使用场景。
  2. 对前后端跨域可以说一下吗?有碰到过跨域问题吗?如何解决跨域的?
  3. 闭包为什么会造成内存泄漏?
  4. 请讲一下JavaScript的垃圾回收机制。
  5. 求一个对象的层级数,用递归和循环分别实现。
  6. 实现下面这道题中的machine函数。
function machine() {
    
}
machine('ygy').execute() 
// start ygy
machine('ygy').do('eat').execute(); 
// start ygy
// ygy eat
machine('ygy').wait(5).do('eat').execute();
// start ygy
// wait 5s(这里等待了5s)
// ygy eat
machine('ygy').waitFirst(5).do('eat').execute();
// wait 5s
// start ygy
// ygy eat
  1. lodash和ramda的区别是什么?
  2. 字符串和new String出来的字符串有啥区别?
  3. JS如何判断网页中图片加载成功或者失败?
  4. 递归和迭代的区别是什么,各有什么优缺点?
  5. 实现一个类型判断函数,需要鉴别出基本类型、function、null、NaN、数组、对象?
  6. 什么是节流和抖动?
  7. 深拷贝和浅拷贝有什么区别?
  8. 如何实现对一个DOM元素的深拷贝,包括元素的绑定事件?
  9. 用代码模拟出apply()、call()和bind()三个函数。
  10. 用代码模拟instanceof运算符。
  11. 实现一个简单的路由。
  12. 封装鼠标拖拽的功能。
  13. 如何让两个非常大的数字相加?
  14. 宏任务和微任务是指什么?
  15. 实现预加载和懒加载。
  16. 如何用Ajax实现大文件上传?
  17. 如何用JavaScript实现两个大数的相加?
  18. ES6的模块和CommonJS模块的对比
  19. 模拟Object.create()方法。
  20. 实现JSON.parse()方法。
  21. setTimeout背后的原理是怎么样的?
  22. 如果实现前端截图?
  23. setTimeOut 和 setInterval 底层有哪些区别?
  24. 在CORS跨域请求时,什么情况下会发两次请求?
  25. 在CORS跨域请求时,需要携带cookie,得做哪些配置?
  26. 如何实现并发请求?

思维导图

JavaScript