40道+JavaScript基础面试题(附答案)

快捷目录

介绍JavaScript的基本数据类型

Number、String 、Boolean 、Null、Undefined。
Object 是 JavaScript 中所有对象的父对象;
数据封装类对象:Object、Array、Boolean、Number 和 String;
其他对象:Function、Arguments、Math、Date、RegExp、Error;
新类型:Symbol

说说写JavaScript的基本规范?

  • 不要在同一行声明多个变量;
  • 使用 ===或!==来比较true/false或者数值;
  • switch必须带有default分支;
  • 函数应该有返回值;
  • for if else 必须使用大括号;
  • 语句结束加分号;
  • 命名要有意义,使用驼峰命名法。

jQuery使用建议

尽量减少对dom元素的访问和操作;

尽量避免给dom元素绑定多个相同类型的事件处理函数,可以将多个相同类型事件处理函数合并到一个处理函数,通过数据状态来处理分支;

尽量避免使用toggle事件。

Ajax使用

全称 :Asynchronous Javascript And XML

所谓异步,就是向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。

创建Ajax的过程:

创建XMLHttpRequest对象(异步调用对象);

var xhr = new XMLHttpRequest();

创建新的Http请求(方法、URL、是否异步);

xhr.open("get","example.php",false);

设置响应HTTP请求状态变化的函数。onreadystatechange事件中readyState属性等于4。响应的HTTP状态为200(OK)或者304(Not Modified);

发送http请求;

xhr.send(data);

获取异步调用返回的数据。

注意:

页面初次加载时,尽量在web服务器一次性输出所有相关的数据,只在页面加载完成之后,用户进行操作时采用ajax进行交互。

同步ajax在IE上会产生页面假死的问题。所以建议采用异步ajax。

尽量减少ajax请求次数

ajax安全问题,对于敏感数据在服务器端处理,避免在客户端处理过滤。对于关键业务逻辑代码也必须放在服务器端处理。

JavaScript有几种类型的值?你能画一下他们的内存图吗?

基本数据类型存储在栈中,引用数据类型(对象)存储在堆中,指针放在栈中。

两种类型的区别是:存储位置不同;原始数据类型直接存储在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;引用数据类型存储在堆中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能.

引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

栈和堆的区别?

栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量等;

堆(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统释放。

Javascript实现继承的几种方式

JavaScript实现继承的3种方法:

借用构造函数法(又叫经典继承)

function SuperType(name) {
   
    this.name = name;
    this.sayName = function() {
           
        window.alert(this.name);    
    };
}        
function SubType(name, age) {
   
    SuperType.call(this, name); //在这里借用了父类的构造函数
    this.age = age;
}

对象冒充

function SuperType(name) {
   
    this.name = name;        
    this.sayName = function() {
           
        window.alert(this.name);    
    };
}        
function SubType(name, age) {
   
    this.supertype = SuperType; //在这里使用了对象冒充    
    this.supertype(name);
    this.age = age;
}

组合继承(最常用)

function SuperType(name) {
   

	this.name = name;

}

SuperType.prototype = {
   

	sayName: function() {
   
		window.alert(this.
  • 11
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silvia250

打赏不在意多少,只要打赏三毛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值