js问答题

index

js问答题 __小胖子

1.JS的数据类型有哪些?typeof运算符的执行结果都有哪些数据类型? (第二阶段 1星 客观)

数据类型主要包括两部分: 基本数据类型: Undefined、Null、Boolean、Number和String 引用数据类型: Array 、Object

typeof运算符的结果类型: number,string,boolean,object,function,undefined

2.null,undefined 的区别? null 表示一个对象被定义了,值为“空值”; undefined 表示不存在这个值。

3.怎么判断一个变量没有被定义 typeof bianliang ==”undefined”

4.怎么判断一个变量arr的话是否为数组(此题用typeof不行) instanceof arr Array

5.事件委托是什么 事件委托就是事件目标自身不处理事件,而是把处理任务委托给其父元素或者祖先元素,甚至根元素(document)。

6.描述下JSON对象的两个很重要的方法

JSON.parse() //JSON字符串转换为JSON对象 JSON.stringify() //JSON对象转化为字符串

7.写一个函数getRandomNumber(startNum,endNum),去除startNum到endNum之间的任意随机数

function getRandomNumber(startNum,endNum){ var endRand = endNum - startNum + 1; //0~1中间的16位数字 var randNum = Math.random(); //随机取出来0~9之间的任意一个数字 randNum = Math.floor(randNum * endRand); return randNum+startNum; }

8.写一个通用的去除字符串左右空格的函数?

String.prototype.strim = function(){ return this.replace(/(^s|s$)/g,””); }

9.a = [1,2,3,4];b=a;a.push(2);b.push(3);请问,最终a,b的结果分别是多少?

a为[1,2,3,4,2,3],b为[1,2,3,4,2,3]

10.检测浏览器的两种方式

功能检测 “touchstart” in document 特征检测 navigator.userAgent

11.“ ===”、“ ==”的区别?

==,当且仅当两个运算数相等时,它返回 true,即不检查数据类型 ===,只有在无需类型转换运算数就相等的情况下,才返回 true,需要检查数据类型

12.原型、原型链?

每个由构造函数new出来的实例化对象都自带一个proto属性,该属性指向创建它的构造函数的prototype对象。而prototype对象因为是实例,也有自己的proto属性,指向它的原型对象。当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype, 于是就这样一直找下去,也就是我们平时所说的原型链的概念。 关系:instance.constructor.prototype = instance.proto

13.eval是做什么的?

它的功能是把对应的字符串解析成JS代码并运行; 应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。 由JSON字符串转换为JSON对象的时候可以用eval,var obj =eval('('+ str +')');

14.["1", "2", "3"].map(parseInt) 答案是多少?

[1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix), 其中 radix 表示解析时用的基数。 map 传了 3 个 (element, index, array),对应的 radix 不合法导致解析失败。

15.简单语言测试:有数组dataarray,值为-100到100的整数,求出数组中大于0的数的和;

var x=0; for(var i=0;i<dataarray.length;i++){ if(dataarray="" style="margin: 0px; padding: 0px; -webkit-print-color-adjust: exact;">0){ x+=dataarray[i]; } }</dataarray.length;i++){>

16.简单jQuery:请写出代码,ul标签下面有1000个li,写一个性能最高的方式实现,在点击li后,输出li的内容

(“ul”).on(“click”,”li”,function(){(this).html(“hit”); })

17.用fetch方法构造一个Get请求,要求把当前页面cookie传过去,请写出代码;

fetch(url,{ method:"GET", credentials:"include", body:document.cookie })

18.简述下为何通过ajax发送的请求会出现乱码问题,如何解决?

乱码的问题就是编码格式冲突,我们需要传输中文数据前面加一个encodeURI()编码,例如:encodeURI(j$("#fk_info").val());在接受参数的页面对传过来的编码过后的内容用后端语言进行解码

19.简述DOM,HTMLDOM的区别和联系

DOM分为三部分: (1)核心DOM:遍历DOM树、添加新节点、删除节点、修改节点 (2)HTML DOM:以一种简便的方法访问DOM树 (3)XML DOM:准用于操作XML文档 核心DOM与HTML DOM的区别: 核心DOM : 对象:Document,Node, ElementNode,TextNode,AttributeNode,CommentNode,NodeList 核心DOM提供了统一的操作接口,如:createElement、appendChild、setAttribute等 核心DOM创建新元素:var newNode=document.createElement("img") 给元素添加属性:e.setAttribure()、e.setAttribureNode() 适用场合:核心DOM适合操作节点,如创建,删除,查找等 HTML DOM: 对象:image,Table,Form,Input,Select等等HTML标签对象化 HTML DOM提供了封装好的各种对象,如:Select、Option等等 适用场合:HTML DOM适合操作属性,如读取或修改属性的值

20.什么是事件流

DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流。DOM同时支持两种事件模型:捕获型事件和冒泡型事件

21.JavaScript原型继承是如何运作的?

每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去(知道找到null为止),也就是我们平时所说的原型链的概念。

22.CORS是什么?对于跨域请求,如何将附带凭证(HTTP Cookie 及 HTTP认证信息)的请求发送至服务器端?

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。只需要服务器端的Response header 设置下Access-Control-Allow-Origin即可。

只需把相应的cookie信息和认证信息作为post请求发送给服务器端即可。

23.DOM元素Attribute与Property的区别是什么?

1、 property是DOM中的属性,是JavaScript里的对象;而attribute是HTML标签上的特性,它的值只能够是字符串; 2、DOM对象初始化时会在创建默认的基本property;只有在HTML标签中定义的attribute才会被保存在property的attributes属性中; 3、attribute会初始化property中的同名属性,但自定义的attribute不会出现在property中; 4、propety是对象,而attribute的值都是字符串; 5、最关键的两句话: attribute(特性),是我们赋予某个事物的特质或对象。 property(属性),是早已存在的不需要外界赋予的特质。 24.Long-Polling、WebSocket、SSE(Server-Sent Events)之间有什么差异?请写出WebSocket在浏览器端如何发送及接收消息的相关代码实现(需要考虑传输一场并根据返回数据的格式做不同处理)

Long-Polling 自己主动请求数据来获知文件知否发生变化 缺点:会有很多无效请求 SSE 服务器端通知客户端数据变化 服务器端客户端保持一个长连接 缺点:保持长连接需要占用大量的服务器端只要 WebSocket 实时通信 缺点:浏览器支持情况没有上面两种方法好

25.实现以下函数: add(10,10);==>20 add(10)(10);==>20

function add(num){ if(arguments.length==1){ return function(num1){ return num+num1; } }else{ var sum = 0; for(var i=0;i<arguments.length;i++){ sum += arguments[i]; } return sum; } }

26.实现以下代码: [a,b,3,4,5].copy();==>[a,b,3,4,5, a,b,3,4,5]

var array = ['a','b',3,4,5]; Array.prototype.copy = function(){ return this.concat(this); } console.log(array.copy());

27.指出下面代码的区别 function Order(){
} var order = Order(); (1) var order = new Order();(2)

代码(1)是将函数Order()作为一个普通函数去调用的,代码(2)是将Order()作为一个构造函数去调用的;当函数Order的方法体中有this关键之的时候,作为普通函数this指的是window对象,作为构造函数存在的时候this指代的是本对象

28.var foo = "Hello"; (function (){ var bar = "World"; alert(foo+bar); })(); alert(foo+bar); 以上语句会产生什么样的结果? (1)HelloWorld (2)undefined

29.函数call和apply的区别:

相同点:两个方法产生的作用是完全一样的 不同点:方法传递的参数不同,call是参数往后累加,apply是把所有参数合并为一个数组传给函数的第二个参数

30.语句(window.foo||(window.foo=”bar”));执行后,window.foo的值是多少?

Bar

31.使用jquery做一次ajax请求,请求类型为post,传入参数是json格式,url为[http://xxx.com,传入参数是{username:“abc”},请求成功返回一个数组例如[1,2,3,4,5]然后对这个数组进行处理后得到一个新的数组,1,2,3,4,5, 1,2,3,4,5]并输出到日志

Array.prototype.copy = function(){ return this.concat(this); } $.ajax({ url:“http://xxx.com”, type:'post', dataType:“json”, data: {username:“abc”}, success:function(data){ console.log(data.copy()); } });

32.以下语句结果a,m的值

var a = "15.56"; var b = 20.23; var a = parseInt(a)+parseInt(b); var m = parseFloat(a);

a:35 m:35

33.var numberArray = [ 3,6,2,4,1,5 ], (1)实现对该数组的倒排 ,输出[5,1,4,2,6,3]

var result = numberArray.reverse( ); alert(result);

(2)实现对该数组的降序排列,输出[6、5、4、3、2、1]

var result = numberArray.sort(function(a,b){return b-a}); alert(result);

34.$(document).ready()是个什么函数?为什么要用它。

问题一: $(document).ready()这个函数是用来取代页面中的window.onload; 不同的是onload()的方法是在页面加载完成后才发生,这包括DOM元素和其他页面元素(例如图片)的加载,因此,使用document.ready()方法的执行速度比onload()的方法要快。

问题二:Javascript 只有在DOM元素已经定义以后才可以对其执行某种操作,jQuery使用document.ready来保证所要执行的代码是在DOM元素被加载完成的情况下执行。

35.读下面代码: window.color = 'red'; var o= {color:'blue'}; function sayColor(){ alert(this.color); } 请在每行末尾写出该行的输出: sayColor();
sayColor.call(this); sayColor.call(window) sayColor.call(o)

答案: red 、red、red、blue

36.请写一个正则,匹配输入的字符:第一个必须是字母或下划线开头,后面就是字母和数字或下划线构成,长度5-20.

答案: /^[A-Za-z_]w{4,19}$/

37.JS中原型链最上层的对象是 object 的原型对象,该对象的proto指针指向 null 的原型对象。

38.JS中使用 Object 对象的 defineProperty 函数定义对象属性的访问器。

39.如何对一篇文章进行敏感词替换?假如有几千个敏感词。(写一下思路即可)

将这篇文章以字符串的形式赋给一个变量。定义一个正则表达式,以全局匹配的方式查找所有敏感词,并用replace方法替换掉

40.添加、删除、更改、插入节点的方法

appendChild removeChild replaceChild insertBefore

41.在javascript编程中,请至少说出三种异步操作的使用场景?

回调函数 事件监听 Promises对象 Nodejs的异步方法

42.请用闭包的方式写一个方法,第一次执行返回999,第二次返回1000.

function bb(){ var num = 999; return function(){ return num++; } }

var fun = bb(); fun(); fun();

43.现在有一个数组[1,4,5,8,100],请写一个方法,每秒输出数组的第一个元素,直到整个数组输出完毕

var arr = [1,4,5,8,100]; function output(){ setTimeout(function(){ console.log(arr.splice(0,1)[0]); if(arr.length>0){ output(); } },1000); } output();

44.请给Array本地对象的prototype添加一个原型方法,它的作用是剔除重复的条目,并将新数组返回

Array.prototype.unique = function(){//数组去除重复 var res = []; var json = {}; for(var i = 0; i < this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res; }

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,168评论 0 3
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,739评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,061评论 1 10
  • Why 很多东西光看文档搞不明白,遂找相关源码读之。 Model 在被较复杂数据关系搞晕后,我这LowLow的设计...
    noai阅读 656评论 0 1
  • confidence,passion,curiosity
    正能量L7阅读 140评论 0 0