POST:一般用于向服务器发送数据,对所发送的数据的大小理论上是没有限制,浏览器会缓存记录地址,但是不会记录 post 提交的数据。post 可以发送纯文本、URL编码格式、二进制格式的字符串,形式多样。
在以下情况中,请使用 POST 请求:
以提交为目的的请求(类似语义化,get 表示请求,post 表示提交);
发送私密类数据(用户名、密码)(因为浏览器缓存记录特性);
向服务器发送大量数据(数据大小限制区别);
上传文件图片时(数据类型区别);
十、 AJAX 的局限性?
建议回复:
AJAX 不支持浏览器 back 按钮。
安全问题 AJAX 暴露了与服务器交互的细节。
对搜索引擎的支持比较弱。不会执行你的 JS 脚本,只会操作你的网页源代码;
跨域请求有一定限制。解决方式:jsonp;
十一、new 操作符具体干了什么呢?
分析:
原理概念题。
建议回复:
当使用 new 操作符调用构造函数,函数实际会经历如下步骤:
创建一个新对象;
把函数中上下文(作用域)对象this指向该对象;
执行代码,通过this给新对象添加属性或方法;
返回对象;
十二、null 和 undefined 的区别?
分析:
经典的概念题。
建议回复:
null: null表示空值,转为数值时为0;
undefined:undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
变量被声明了,但没有赋值时,就等于undefined。
对象没有赋值的属性,该属性的值为undefined。
函数没有返回值时,默认返回undefined。
十三、JavaScript 原型,原型链 ? 有什么特点?
建议回复:
JavaScript 原型: 每创建一个函数,函数上都有一个属性为 prototype,它的值是一个对象。 这个对象的作用在于当使用函数创建实例的时候,那么这些实例都会共享原型上的属性和方法。
原型链: 在 JavaScript 中,每个对象都有一个指向它的原型(prototype)对象的内部链接(proto)。这个原型对象又有自己的原型,直到某个对象的原型为 null 为止(也就是不再有原型指向)。这种一级一级的链结构就称为原型链(prototype chain)。 当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止;到查找到达原型链的顶部(Object.prototype),仍然没有找到指定的属性,就会返回 undefined。
十四、实现对数组进行乱序
分析:
这道题检验了数组的 sort() 方法,因为是乱序,所以还需要用到 Math.random() 产生随机数,打乱排序规律。
建议回复:
在写代码前,先把实现原理介绍一下,然后再开始写代码:
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var sign = 1; a.sort(function(a, b) { return Math.random() - 0.5 });
十五、实现一个函数 clone(),可以对 JavaScript 中的5种主要的数据类型(包括 Number、String、Object、Array、Boolean)进行值复制。
分析:
这道题考察了以下知识点:
使用 typeof 判断值得类型;
使用 toString 区分数组和对象;
递归函数的使用;
建议回复:
function clone(obj) { //判断是对象,就进行循环复制 if (typeof obj === 'object' && typeof obj !== 'null') { // 区分是数组还是对象,创建空的数组或对象 var o = Object.prototype.toString.call(obj).slice(8, -1) === "Array" ? [] : {}; for (var k in obj) { // 如果属性对应的值为对象,则递归复制 if(typeof obj === 'object' && typeof obj !== 'null'){ o[k] = clone(obj[k]) }else{ o[k] = obj[k]; } } }else{ //不为对象,直接把值返回 return obj; } return o; }
总结
以上就是给大家总结关于Javascript前端面试题的全部内容了,后续看到再继续补充,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,请大家继续关注脚本之家。
您可能感兴趣的文章: