js烧脑面试题大赏】的更多相关文章

本文精选了20多道具有一定迷惑性的js题,主要考察的是类型判断.作用域.this指向.原型.事件循环等知识点,每道题都配有笔者详细傻瓜式的解析,偏向于初学者,大佬请随意. 第1题 let a = 1 function b(a) { a = 2 console.log(a) } b(a) console.log(a) 点击查看答案 2.1 点击查看解析 首先基本类型数据是按值传递的,所以执行b函数时,b的参数a接收的值为1,参数a相当于函数内部的变量,当本作用域有和上层作用域同名的变量时,无法访问…
1.js 统计一个字符串出现频率最高的字母/数字 let str = 'asdfghjklaqwertyuiopiaia'; const strChar = str => { let string = [...str], maxValue = '', obj = {}, max = 0; string.forEach(value => { obj[value] = obj[value] == undefined ? 1 : obj[value] + 1 if (obj[value] >…
关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量)内部可以访问外部,但外部的不能访问内部的  ; function aaa(){ alert(a); }; aaa(); //a 为外部变量即全局变量,所以可以直接访问到 结果为10 function aaa(){ ; }; aaa(); alert(a); //a 为函数aaa()内部变量量即局部变…
由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } }; } var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,? var b = fun(0).fun(…
什么是作用域:浏览器给js的生存环境叫作用域. 什么是变量提升: Js代码执行前,浏览器会给一个全局作用域window Window分两个模块一个是存储模块一个是执行模块 存储模块找到所有的var和function 关键字给这些变量添加内存地址 执行模块,代码从上到下执行,遇到变量就会去存储模块查找,有和没有 有就看你赋值没有,赋值了就是后面的值没有赋值就是undefined. 没有结果就是xxx is not defined 什么是原型链:函数内部的变量被使用时,首先会在自己的私有作用域下查找…
转载地址:http://www.cnblogs.com/xxcanghai/p/4991870.html 先看代码: function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } }; } var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,? var b = fun(0).fun(1).fun(2).fun(3);//undef…
自己总结了一些JS面试题 希望能够帮助正在找工作的程序猿(●´∀`●) 1.js 实现一个函数对javascript中json 对象进行克隆 var oldObject ="sdf"; var newObject = JSON.parse(JSON.stringify(oldObject)); console.log(newObject); 或者 var a = 'dddd'; function cp(a){return JSON.parse(JSON.stringify(a))} c…
作者 | Jeskson 来源 | 达达前端小酒馆 1 究竟是怎么样的一道面试题,能让我拿出来说说呢?下面请看代码: function fun(a,b) { console.log(b) return { fun: function(c) { return fun(c,a); } }; } var d = fun(0); d.fun(1); d.fun(2); d.fun(3); var d1 = fun(0).fun(1).fun(2).fun(3); var d2 = fun(0).fun(…
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console.log(typeof objNum) // null 拆箱:将引用类型对象转换为对应的值类型数据对象: valueOf() var objNum = new Number(132) console.log(typeod objNum.valueOf()) // 123 number js toPr…
在园里看到一道面试题,<div id="test">Click Here</div> var node=document.getElementById('test'); node.onclick=function(){ console.log('1'); } node.addEventListener('click',function(){ console.log('2'); },false); node.onclick=function(){ console.…
我爱撸码,撸码使我感到快乐!大家好我是Counter.今天给大家分享的是利用JS将汉诺塔原理实现出来,其实主要是考察一个递归的思想,复杂的问题简单化,汉诺塔应该都知道吧,具体的游戏规则,可以百度查查,这边就不赘述了,主要说说,如何利用js去实现这样的想法. 直接上代码吧: // hanio(数量,启动柱子形参, 辅助柱子形参,目标柱子形参) function hanio(num, A, B, C) { // 如果数量只有一个的话,那么直接从启动柱子拿起来放到目标柱子就可以了 if (num ==…
1.array操作关键字: pop() 删除最后一个:push最后添加一个或者多个:reverse颠倒数组:shift删除第一个元素:unshift首部添加元素:concat衔接两个数组:join把数组按照指定字符变为字符:slice(1,1)截选数组元素: 2.js闭包的优缺点: 闭包是有权访问另一个函数私有变量的函数叫闭包: 优点:避免变量污染.加强了封装性,逻辑性比较强代码的可读性高:加载到内存中执行效率高: 缺点:在内存中,造成了内存浪费,如果滥用闭包是灾难性的: 3.模块化的意义: E…
Vue.js介绍 Vue.js是JavaScript MVVM(Model-View-ViewModel)库,十分简洁,Vue核心只关注视图层,相对AngularJS提供更加简洁.易于理解的API.Vue尽可能通过简单的API实现响应的数据绑定和组合的视图组件. Vue和MVVM模式 MVVM模式即Model-View-ViewModel. Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,DOM和数据将保持同步,每当数据发生变化,DOM会跟着变化. ViewModel是V…
一.闭包:   1.函数嵌套函数.内部函数可以引用外部函数的参数和变量. 参数和变量不会被垃圾回收机制所收回   function aaa(a){ var b = 5; function bbb(){ alert(a); //内部函数引用外部函数的参数 alert(b);//内部函数引用外部函数的变量 }   }   2.好处:   1)希望一个变量长期驻扎在内存当中. 2)避免全局变量的污染 3)私有成员的存在     function aaa(){ var a = 1; //局部,避免在函数…
大家都知道在面试的时候,很多前端的必须要问的就是js的问题,最近我们公司也有很多这样的面试,我提了一些个问题,还有我面试的时候面试官面试我的问题汇总,也有百度的别人的,希望对那些刚进入这个行业的有一些帮助!!!1.javascript的typeof返回哪些数据类型Object number function boolean underfind 2.例举3种强制类型转换和2种隐式类型转换?强制(parseInt,parseFloat,number)隐式(== – ===) 3.split() jo…
1. Js的Typeof返回类型有那些? string:undefined:number; function:object:boolean:symbol(ES6) 2. null和undefined的区别? null是Js的关键字,表示空值.可作为object的一个特殊值,如果object值为null,表示该对象不是一个有效对象. undefined不是Js的关键字,是一个全局变量,是Global的一个属性. 类型不一样:typeof(null) == "object",typeOf(…
callback hell方法的使用 可读性不友好 function loadImg(src,callback,fail){ var img = document.createElement('img'); img.onload = function(){ callback(img); } img.onerror = function(){ fail(); } img.src = src; } var src = "https://www.baidu.com/img/baidu_jgylogo3…
前几天看到掘金博客一篇文章,找到了这个JavaScript进阶问题列表:现在把地址贴出来,想找工作或者想要巩固自己JS的同学可以参考 该文档会不定时更新    一.箭头函数 箭头函数相当于匿名函数,并且简化了函数的定义.它最大的有点是解决了this执行环境造成的一些问题.最常见的就是在setTimeout和setInterval中使用this造成的问题 在“use strict” 严格模式下,没有直接的调用者的函数中this是指向window的,这个是约定俗成的.在“use strict”严格模…
function printArray(arr){ for(var i in arr){ if(arr[i] instance of Array){ printArray(arr[i]); }else{ document.write(arr[i]+' '); } } } var data=[1,[20,21],[[301,302],[310,[311]]]; printArray(data); 上述代码运行后,页面输出结果为? 答:1 20 21 301 302 310 311 函数printA…
1:Scope作用范围 1: (function() { 2: var a = b = 5; 3: })(); 4: 5: console.log(b); 什么会被打印在控制台上? 回答 上面的代码会打印 5. 这个问题的诀窍是,这里有两个变量声明,但 a 使用关键字var声明的.代表它是一个函数的局部变量.与此相反,b 变成了全局变量. 这个问题的另一个诀窍是,它没有使用严格模式 (‘use strict';).如果启用了严格模式,代码就会引发ReferenceError的错误:B没有定义(b…
找出元素 item 在给定数组 arr 中的位置 function indexOf(arr, item) { return arr.indexOf(item); } function indexOf(arr, item){ var index = -1; arr.forEach(function(res,i){ if(res === item && index === -1){ index = i; } }); return index; } function indexOf(arr, i…
题目一示例: 适用于子数组等长度及不等长度. let arr = [ [1,2,3], [5,6,7,8], [9,10,11,12,13] ] function arrayDiagonal(arr) { let lenarr = []; for(let s = 0; s < arr.length;s ++) { lenarr.push(arr[s].length) } let arrChildlen = Math.max.apply(null,lenarr); console.log(arrC…
1. var User = { count: 1, getCount: function () { return this.count; } }; console.log(User.getCount()); // 1var func = User.getCount;console.log(func()); // undefined 执行过程: console.log(User.getCount()); // 1 getCount函数被User对象调用,所以this指向的是User. consol…
<script> //1. var foo = { bar: function () { return this.baz; }, baz: 1 }; (function () { return typeof arguments[0](); })(foo.bar); //foo.bar方法没有参数,typeof arguments[0]()为undefine //2. var f = (function f() { return "1"; }, function g() {…
1.大小写转化,将字符串转化成驼峰的方法 例:border-bottom-color转化为:borderBottomColor var str="border-bottom-color"; 方法一:字符串处理方式 function change(str){ var arr=str.split('-');//[border,bottom,color] for(var i=1;i<arr.length;i++){ arr[i]=arr[i].charAt(0).toUpperCase…
题目是这样的,按照以下函数的结果写一个sub()方法: sub(1)(2)(3);/*return 6*/ sub(4)(3)(3);/*return 10*/ 我的山寨做法: function sub(n){ return function(j){ return function(i){ console.log(n+j+i); } } } sub(1)(2)(3);/*return 6*/…
网上看到的一个题,在这里存一下 此为题目function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { alert (3);}; var getName = function () { alert (4);}; function getName() { alert…
1.判断数据类型有几种方法 console.log(typeof 'abc') // string console.log(Object.prototype.toString.call('abc')) // [object String] console.log('abc'.constructor == String) // true 2.数据类型有哪些? 基本类型:String.Number.boolean.undefined.null 复杂类型:function.object.NaN.Arr…
function foo(){ getName = function () { alert(1); }; return this; } Foo.getName = function(){ alert(2); }; Foo.prototype.getName = function(){ alert(3); }; var getName = function(){ alert(4); }; function getName(){ alert(5)}; // 请写出系列的输出结果 Foo.getNam…
这套题第一道题难度最大,我第一遍的回答居然也错的,我悲观估计80%的JavaScript从业人员都答不完全准确 []==![] 得到什么? false, 你还需要看看基础 true, 恭喜你答对了,你的推导过程是否正确呢? 请看代码链接,http://jsbin.com/uVOTOce/9…