📝记录:近期面试JS的提问

2,378 阅读4分钟

1、求y和z的值是多少?

var x = 1;
var y = 0;
function add(n){n=n+1;}
y = add(x);
console.log(y);

答案:为undefined

原因:因为没有返回值。

2、// 声明一个函数表达式

var add = function(x){
var sum = 1;
// 在函数表达式内部有一个求和的内部函数
var tmp = function(x){
sum = sum + x;// 求和
return tmp;
}
// 构建一个函数体的toString()函数
tmp.toString = function(){
return sum;
}
return tmp; // 返回的是一个函数体,如果该函数体有toString()方法,则会调用函数体的toString()方法
}
console.log(add(100)(2)(3);

答案:5

3、javascript是面向对象的,怎么体现javascript的继承关系?

参考答案:

1.原型链

基本思想:利用原型让一个引用类型继承另外一个引用类型的属性和方法。

构造函数,原型,实例之间的关系:每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。

原型链实现继承例子:

function SuperType()
{
this.property = true;
}
SuperType.prototype.getSuperValue = function() {
return this.property;
}
function subType() {
this.property = false;
}
//继承了SuperTypeSubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){
return this.property;
}
var instance = new SubType();
console.log(instance.getSuperValue());//true

2.借用构造函数

基本思想:在子类型构造函数的内部调用超类构造函数,通过使用call()和apply()方法可以在新创建的对象上执行构造函数

例子:

function SuperType() {
this.colors = ["red","blue","green"];
}
function SubType() {
SuperType.call(this);
//继承了SuperType
}
var instance1 = new SubType();
instance1.colors.push("black");
console.log(instance1.colors);//"red","blue","green","black"
var instance2 = new SubType();
console.log(instance2.colors);//"red","blue","green"

4、form中的input可以设置为readonly和disable,请问二者有什么区别?

参考答案:

readonly不可编辑,但可以选择和复制;值可以传递到后台
disabled不可编辑,不能选择,也不能复制;值不可以传递到后台

5、javaScript的2种变量范围有什么不同?

参考答案:

全局变量:当前页面内有效
局部变量:方法内有效
全局作用域和块级作用域

6、程序中捕获异常的方法?

参考答案:

window.error
try{}catch(){}finally{}

7、写出程序运行的结果?

for(i=0, j=0; i<10, j<6; i++, j++){
k = i + j;
}
console.log(k);

答案:10

8、前端页面由哪三层构成,分别是什么?作用是什么?

参考答案:

结构层 Html(页面结构内容,骨架)
表示层 CSS(网页的样式和外观)
行为层 js(实现网页的交互,动画效果)

9、标签上title与alt属性的区别是什么?

参考答案:

Alt是图片属性,让搜索引擎认识你的图片。当图片不显示的时候显示。
title是网站标题,是seo中最重要的属性。

10、如何优化网页加载速度?

**  参考答案**:

1.减少http请求
2.压缩组件
3.将脚本放在底部
4.避免CSS表达式
5.使用外部的JavaScript和CSS

11、用过哪些前端框架,适合移动端的有哪些,并简单述说一下它们的优缺点。

参考答案:

1.Bootstrap, 是使用最广泛的框架。有最全面的功能,并且可以快速地定制自己的项目。
2.Foundation 是一个先进的响应前端框架,可以根据您的具体需求,这使得它很容易发展多种布局的,并且移动版本和桌面设备使用相同的标记。
3.UI Kit 基于Less开发,是一款轻量级、模块化的前端框架,可快速构建强大的web前端界面,且提供了全面的HTML、CSS及JS组件,使用简单、定制方便。
4.Pure 来自雅虎的一套CSS模块,可以将其作为基础用在Web项目中,非常小巧。
5.Amaze UI 以移动优先(Mobile first)为理念,从小屏逐步扩展到大屏,最终实现所有屏幕适配,适应移动互联潮流。

12、return 、return false 、return true 区别:

参考答案:

return true;返回正常的处理结果.
return false;返回错误的处理结果;终止处理;阻止提交表单;阻止执行默认的行为.
return;把控制权返回给页面.

目前问题一些大概就是这些了,重要的都记下来了,不重要的,反正都是瞎扯怎么怎么牛皮。

各位有时间可以去我博客转转增加IP+1好人卡呀

博客