伊莎贝尔塔 發表於 2020-1-19 09:43:00

JavaScript面试题

<p>1.<span style="font-family: 宋体">下面代码执行结果是()</span></p>
<p>var a=123;</p>
<p>fn(a);</p>
<p>function fn(){a=456}</p>
<p>document.write(a);</p>
<p>&nbsp;</p>
<p>A.456  B.122  C.<span style="font-family: 宋体">报错  </span>D.undefined&nbsp;</p>
<div class="cnblogs_code">
<pre>考点:变量的作用域,全局变量和局部变量的转换</pre>
</div>
<p>2.html<span style="font-family: 宋体">文档中怎么区分节点对象的节点类型()</span></p>
<p>A.typeof   B.type   C.nodeType   D.nodeName</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">  获取数据类型
type    没有这个方法
nodeType节点类型
    元素节点 </span>1<span style="color: rgba(0, 0, 0, 1)">
    属性节点</span>2<span style="color: rgba(0, 0, 0, 1)">
    文本节点   </span>3<span style="color: rgba(0, 0, 0, 1)">
    注释节点   </span>8<span style="color: rgba(0, 0, 0, 1)">
    文档节点</span>9<span style="color: rgba(0, 0, 0, 1)">
nodeName节点名称
    元素节点    标签名相同 DIV
    属性节点    属性名称
    文本节点    #text</span></pre>
</div>
<p><span style="font-family: 宋体">4.下面对象或数组的创建方式错误的是()</span></p>
<p>A.var obj={};</p>
<p>B.Var obj={[]};</p>
<p>C.Var obk=[{}];</p>
<p>D.Var obj={age:123};</p>
<p align="justify">&nbsp;</p>
<p align="justify"><span style="font-family: 宋体">5.</span><span style="font-family: 宋体">下面代码的执行结果是()</span></p>
<p align="justify">var i=12;</p>
<p align="justify">var sum=i++ + ++i + ++i*2 + i-- + i--</p>
<p align="justify">document.write(sum+’ ’+i);</p>
<p align="justify">A.85 &nbsp;&nbsp;13&nbsp;   B.84 12  C.83 11  D.85 14</p>
<p align="justify">&nbsp;</p>
<p align="justify">5.<span style="font-family: 宋体">数组中哪个方法不可以实现删除数组本身中的数据()</span></p>
<p align="justify">A.shift()  B.pop()  C.splice()  D.slice()</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值
pop() 方法用于删除最后一个元素,并返回被删除的元素
splice(开始位置,删除的个数,要添加的新内容)
Slice(开始位置,结束位置),从已有的数组中返回选定的内容</span></pre>
</div>
<p align="justify">&nbsp;</p>
<p align="justify">6.<span style="font-family: 宋体">下面哪个不是</span>javascript<span style="font-family: 宋体">中的数据类型()</span></p>
<p align="justify">A.string   B.number   C.undefined   D.num</p>
<p align="justify">&nbsp;</p>
<p align="justify">7.<span style="font-family: 宋体">下面哪个不是</span>javascript<span style="font-family: 宋体">中的关键字或保留字</span> <span style="font-family: 宋体">()</span></p>
<p align="justify">A.class  B.var  C.link  D.Instanceof</p>
<div class="cnblogs_code">
<pre>object instanceod constructor   <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">object要检测的对象,constructor某个构造函数。</span>
"string" <span style="color: rgba(0, 0, 255, 1)">instanceof</span> String<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回false,检查原型链会找到undefined。</span>
<span style="color: rgba(0, 0, 255, 1)">new</span> String() <span style="color: rgba(0, 0, 255, 1)">instanceof</span> String<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">true</span>
<span style="color: rgba(0, 0, 255, 1)">new</span> String('string') <span style="color: rgba(0, 0, 255, 1)">instanceof</span> String<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">true</span>
<span style="color: rgba(0, 0, 255, 1)">new</span> String() <span style="color: rgba(0, 0, 255, 1)">instanceof</span> Object<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">true</span>
console.log('123' <span style="color: rgba(0, 0, 255, 1)">instanceof</span> Object);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> false</span>
console.log(<span style="color: rgba(0, 0, 255, 1)">new</span> String('123') <span style="color: rgba(0, 0, 255, 1)">instanceof</span> Object);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">true</span></pre>
</div>
<p>&nbsp;</p>
<p align="justify">8.<span style="font-family: 宋体">下面代码的执行结果肯定不会是()</span></p>
<p align="justify">document.write(parseInt(Math.random()*3));</p>
<p align="justify">A.1   B.0   C.2   D.3</p>
<div class="cnblogs_code">
<pre>Math.random()*3的结果最大为2.7,所有,取整之后最大为2</pre>
</div>
<p>9.New Date(2012,12,8).getMonth()<span style="font-family: 宋体">的结果是什么</span></p>
<p>A.12 &nbsp;&nbsp;   B. 11   C.0 &nbsp;   D.13</p>
<div class="cnblogs_code">
<pre>月份是从0开始到11,月12会向年进1,年变成2013,月为0</pre>
</div>
<p>&nbsp;</p>
<p>10.<span style="font-family: 宋体">请阅读下面代码 &nbsp;</span><span style="font-family: Calibri">var arr=;</span><span style="font-family: 宋体">如何将上面数组按照降序排序</span></p>
<p>A.arr.sort()</p>
<p>B.arr.sort(function(a,b){return a-b;})</p>
<p>C.arr.sort(function(a,b){return b-a;})</p>
<p>D.arr.sort(b-a)</p>
<div class="cnblogs_code">
<pre>sort方法加比较函数,<span style="color: rgba(0, 0, 255, 1)">return</span> a-b,做的就是升序;<span style="color: rgba(0, 0, 255, 1)">return</span> b-a,做的就是降序</pre>
</div>
<p>&nbsp;</p>
<p align="justify">11.<span style="font-family: 宋体">下面描述错误的是</span></p>
<p align="justify">A.document.head <span style="font-family: 宋体">返回</span><span style="font-family: Calibri">head</span><span style="font-family: 宋体">元素</span></p>
<p align="justify">B.document.body <span style="font-family: 宋体">返回</span><span style="font-family: Calibri">body</span><span style="font-family: 宋体">元素</span></p>
<p align="justify">C.document.html &nbsp;<span style="font-family: 宋体">返回</span><span style="font-family: Calibri">html</span><span style="font-family: 宋体">元素</span></p>
<p align="justify">D.document.documentElement &nbsp;<span style="font-family: 宋体">返回</span><span style="font-family: Calibri">html</span><span style="font-family: 宋体">元素</span></p>
<div class="cnblogs_code">
<pre>    console.log(document.head);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> head</span>
    console.log(document.body);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> body</span>
<span style="color: rgba(0, 0, 0, 1)">    console.log(document.html);
    console.log(document.documentElement); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 整个文档结构 </span></pre>
</div>
<p>&nbsp;</p>
<p align="justify">12.var n=’liang zi ju zhen’.indexOf(‘zi’,7); n<span style="font-family: 宋体">的值为</span></p>
<p align="justify">A.-1  B.5  C.<span style="font-family: 宋体">报错  </span>D.-10</p>
<div class="cnblogs_code">
<pre>indexOf(查找的内容,开始查找的位置)查找字符串第一次出现的位置,它的取值是0到字符串的长度-1,如果省略就从字符串的首字符开始检索,如果没有检索到就返回-1,对大小写敏感</pre>
</div>
<p>&nbsp;</p>
<p align="justify">13. 0.1+0.7==0.8<span style="font-family: 宋体">该表达式返回</span></p>
<p> A.true  B.false  C.infinity  D.NaN</p>
<p align="justify">&nbsp;</p>
<p align="justify">14.<span style="font-family: 宋体">哪个属性可以获得滚动条已经滚动的垂直距离</span></p>
<p align="justify">A.document.scrollTop</p>
<p align="justify">B.document.top</p>
<p align="justify">C.document.body.scrollTop</p>
<p align="justify">D.window.scrollTop</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">document.body.scrollTop; 对应的是 body 标签
还可以使用
document.documentElement.scrollTop; 对应的是 html 标签;</span></pre>
</div>
<p>&nbsp;</p>
<p>15.var arr=; alert(arr.concat(1,2,3,,5).length)</p>
<p>A.4  B.9  C.11  D.5</p>
<div class="cnblogs_code">
<pre>concat会把拆分开,concat的返回值是拼接成的新数组
如果是alert(arr.length);</span>=&gt;4</pre>
</div>
<p>&nbsp;</p>
<p>16.<span style="font-family: 宋体">下面结果返回值为</span><span style="font-family: Calibri">4</span><span style="font-family: 宋体">的有</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">多选</span><span style="font-family: Calibri">)</span></p>
<p>A.Number(‘4’)</p>
<p>B.parseInt(‘4aa11’)</p>
<p>C.Math.floor(3.5)</p>
<p>D.Math.round(3.5)</p>
<p>&nbsp;</p>
<p>17.<span style="font-family: 宋体">以下返回结果为类数组对象的语句为</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">多选</span><span style="font-family: Calibri">)</span></p>
<p>A.document.getElementById()</p>
<p>B.document.getElementsByClassName()</p>
<p>C.document.querySelector()</p>
<p>D.document.querySelectAll()&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">document.getElementById是通过id查找元素;
document.querySelector是ES5新方法,能够根据id,类名,标签名查找元素,如果参数写的是类名或者标签名,找到的是第一个元素,这两个方法找到的都是单个元素
document.getElementByClassName()和document.querySelectAll()找到的是集合,是多个元素</span></pre>
</div>
<p>&nbsp;</p>
<p>18.var now=new Date(),<span style="font-family: 宋体">设置</span><span style="font-family: Calibri">3</span><span style="font-family: 宋体">天后的事件正确写法是(多选)</span></p>
<p>A.now.setDate(now.getDate()+3);</p>
<p>B.now.setTime(now.getTime()+3);</p>
<p>C.now.setTime(now.getTime()+3*1000*3600*24);</p>
<p>D.now.setTime(now.getDate()+3*1000*3600*24);</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">now.getDate()获取的是当前时间的天;
now.getTime() 获取的是时间戳
now.setTime() 以毫秒设置 Date 对象
</span><span style="color: rgba(0, 0, 255, 1)">var</span> d = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Date()
d.setTime(</span>77771564221<span style="color: rgba(0, 0, 0, 1)">)
document.write(d)</span></pre>
</div>
<p>&nbsp;</p>
<p>19.<span style="font-family: 宋体">下面对字符串的描述正确的是(多选)</span></p>
<p>A.<span style="font-family: 宋体">字符串的长度可以通过</span>length<span style="font-family: 宋体">属性获取</span></p>
<p>B.<span style="font-family: 宋体">字符串可以通过</span>charAt()<span style="font-family: 宋体">获取某个字符对应的索引</span></p>
<p>C.<span style="font-family: 宋体">字符串可以通过</span>indexOf()<span style="font-family: 宋体">获取某个字符对应的索引</span></p>
<p>D.<span style="font-family: 宋体">字符串可以通过</span>join()<span style="font-family: 宋体">转为数组</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">length 获取常速
charAt() 获取下标值
indexOf() 自字符串第一次出现的位置
Join 数组转为字符串
Split 字符串转为数据</span></pre>
</div>
<p>&nbsp;</p>
<p>20.<span style="font-family: 宋体">下面那些是属于</span><span style="font-family: Calibri">DOM</span><span style="font-family: 宋体">操作的方法</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">多选</span><span style="font-family: Calibri">)</span></p>
<p>A.removeChildren()</p>
<p>B.appendChild()</p>
<p>C.children</p>
<p>removeChild()</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">removeChildren是错误方法,应该是removeChild
children是选择器,是获取元素的,不能操作元素
appendChildren 插入节点</span></pre>
</div>
<p>&nbsp;</p>
<p>21.请选择结果为真的表达式 ()</p>
<p>A. null&nbsp; instanceof&nbsp; Object</p>
<p>B. null == undefined</p>
<p>C. NaN == NaN</p>
<p>D.&nbsp; false == undefined</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">A instanceof B 判断A是否是B类型
NaN(不是一个数字),任何一个NaN </span>!=NaN</pre>
</div>
<p>&nbsp;</p>
<p>22. 下面程序的执行结果是()</p>
<div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> name = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">world</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
(function(){
    </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">typeof</span> name === <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">undefined</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">){
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> name = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Jack</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
      console.log(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Goodbye </span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> name );
    }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
      console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hello </span><span style="color: rgba(128, 0, 0, 1)">'</span>+<span style="color: rgba(0, 0, 0, 1)">name);
    }
})(); </span></pre>
</div>
<p>A. Goodbye&nbsp; Jack</p>
<p>B. Hello Jack</p>
<p>C. Hello undefined</p>
<p>D. Hello World</p>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">在函数外声明的是全局变量,在函数内部声明的是局部变量
</span><span style="color: rgba(0, 0, 255, 1)">var</span> 拥有预先声明的作用</pre>
</div>
<p>&nbsp;</p>
<p>23. 下面关于DOM事件流的表述哪些是正确的</p>
<p>A. 时间流包括两个阶段:事件捕获阶段、事件冒泡阶段</p>
<p>B. IE跟标准浏览器对于DOM事件流实现不一样</p>
<p>C. 假设parentEle是childEle的父节点 绑定事件:parentEle.addEventListener('click', fn1, false); 和&nbsp;&nbsp;childEle.addEventListener('click', fn2, false); 当点击childEle的时候,fn1将先于fn2触发</p>
<p>D. addEventListener 第三个参数true代表支持捕获,false代表不支持捕获</p>
<p>&nbsp;</p>
<p>24. 当链接指向下列哪一种文件时,不打开该文件,而是提供给浏览器下载()</p>
<p>A. ASP</p>
<p>B. HTML</p>
<p>C. ZIP</p>
<p>D. CGI</p>
<div class="cnblogs_code">
<pre>ZIP,rar,7Z这几种都属于压缩格式,直接点击的时候,执行的是下载功能而不是打开的方式</pre>
</div>
<p>&nbsp;</p>
<p>25. 下列哪一项表示的不是按钮( )</p>
<p>A. type=‘button’</p>
<p>B. type=‘reset’</p>
<p>C. type=‘image’</p>
<p>D. type=‘button’</p>
<div class="cnblogs_code">
<pre>type=<span style="color: rgba(0, 0, 0, 1)">image可以用来作为表单的图片按钮
表面上 type</span>=image和type=<span style="color: rgba(0, 0, 0, 1)">submit都可以相应回车,并且都能提交。
不过唯一的区别就是type</span>=<span style="color: rgba(0, 0, 0, 1)">image的input提交方式会把按钮点击的位置坐标x,y提交过去。
对于通常的表单应用来说,这样多一两个参数并没有问题,因为我们在接收端中都是按照指定的名称来处理参数,所以即使多了两个参数也不会有任何问题。</span></pre>
</div>
<p>&nbsp;</p>
<p>26.下列哪一项是在新窗口中打开网页( )</p>
<p>A. _self</p>
<p>B. _blank</p>
<p>C. _top</p>
<p>D. _parent</p>
<p>&nbsp;</p>
<p>27.在html中,一下选项不是链接的目标属性( )</p>
<p>A. self</p>
<p>B. new</p>
<p>C. blank</p>
<p>D. top</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 18px"><strong>JavaScript面试题 - 简答题</strong></span></p>
<p>1.列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。</p>
<div class="cnblogs_code">
<pre><span>主要数据类型:string, boolean, number

复合数据类型:function, object

特殊类型:undefined,null</span></pre>
</div>
<p>&nbsp;</p>
<p>2.思考:输出"B" + "a" + + "B" + "a"的值</p>
<div class="cnblogs_code">
<pre>BaNaNa。</pre>
</div>
<p>3.思考:[] == [] 的值为?</p>
<div class="cnblogs_code">
<pre>false</pre>
</div>
<p>&nbsp;4.以下代码输出结果为?</p>
<p>&nbsp;</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">var bool=true;
setTimeout(function(){bool=false},0);
console.log(bool);<br><br>// 结果true</pre>
</div>
<p>&nbsp;</p>
<p>5.请阅读下面代码</p>
<div class="cnblogs_code">
<pre>var arr = ;
var arr2 =<span> arr;
arr2.push(0<span>);
arr2.concat(6<span>);
console.log(arr);         
// </span></span></span></span></pre>
</div>
<p>6.请阅读下面代码</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">function aa(){
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
}
console.log(aa </span>== aa());<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">false</span>
console.log(aa ||<span style="color: rgba(0, 0, 0, 1)"> aa());
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ƒ aa(){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">            return 1;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      }</span></pre>
</div>
<p>&nbsp;7.请描述一下cookie,sessionStrorage,和localStorage的区别</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。
</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.cookie和session
    cookie和session都是用来跟踪浏览器用户身份的会话方式。
区别:
    保持状态:cookie保存在浏览器端,session保存在服务器端

HTML5中与本地存储相关的两个重要内容:Web Storage与本地数据库。其中,Web Storage存储机制是对HTML4中cookie存储机制的一个改善。由于cookie存储机制有很多缺点,HTML5不再使用它,转而使用改良后的Web Storage存储机制。本地数据库是HTML5中新增的一个功能,使用它可以在客户端本地建立一个数据库,原本必须保存在服务器端数据库中的内容现在可以直接保存在客户端本地了,这大大减轻了服务器端的负担,同时也加快了访问数据的速度。

具体来说,Web Storage又分为两种:
    </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.sessionStorage:将数据保存在session对象中。所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据。

    </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.localStorage:将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。

    这两者的区别在于,sessionStorage为临时保存,而localStorage为永久保存。

    到目前为止,Firefox3.6以上、Chrome6以上、Safari 5以上、Pera10.50以上、IE8以上版本的浏览器支持sessionStorage与localStorage的使用。</span></pre>
</div>
<p>&nbsp;</p>
<p>8. 写一个function,清除字符串前后的空格(兼容所有浏览器)</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">function trim(str) {
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> (str &amp;&amp; <span style="color: rgba(0, 0, 255, 1)">typeof</span> str === <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">string</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">) {
      </span><span style="color: rgba(0, 0, 255, 1)">return</span> str.replace(/(^\s*)|(\s*)$/g,<span style="color: rgba(128, 0, 0, 1)">""</span>); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">去除前后空白符</span>
<span style="color: rgba(0, 0, 0, 1)">    }
}</span></pre>
</div>
<p>&nbsp;</p>
<p>9. position包含几种属性?absolute和relative的区别?</p>
<p>&nbsp;</p>
<p>10.js中this的工作原理</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.函数默认执行 :此时this指向Window
</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.函数的隐式执行 : this指向函数的直接执行对象
</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">.函数的显式执行 : this指向指定对象
</span><span style="color: rgba(128, 0, 128, 1)">4</span>.构造函数执行(通过new执行)</pre>
</div>
<p>&nbsp;</p>
<p>11.利用@media screen 实现网页布局的自适应,判断媒体类型,执行不同的css样式属性,重要属性:max-width:设置最小分辨率大小;max-width:设置最大分辨率大小</p>
<p>&nbsp;</p>
<p>12. 程序题</p>
<div>
<div>function foo(){</div>
<div>  var a=2;</div>
<div>  this.bar();</div>
<div>}</div>
<div>function bar(){</div>
<div>  console.log(this.a);</div>
<div>}</div>
<div>A = 6;</div>
<div>bar();会输出什么?为什么?</div>
</div>
<div class="cnblogs_code">
<pre>undefined 因为不存在全局变量a</pre>
</div>
<p>&nbsp;</p>
<p>13. data-*属性的作用是什么,日常工作中如何使用?</p>
<p>&nbsp;</p>
<p>14. call,apply,bind的区别?</p>
<p>&nbsp;</p>
<p>15. 简述css的flex布局</p>
<p>&nbsp;</p>
<p>&nbsp;16. 请用JS手写快速排序</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> arr = [<span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(128, 0, 128, 1)">23</span>, <span style="color: rgba(128, 0, 128, 1)">54</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">22</span>, <span style="color: rgba(128, 0, 128, 1)">12</span>, <span style="color: rgba(128, 0, 128, 1)">43</span>, <span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)">];

function quickSort(arr){
    </span><span style="color: rgba(0, 0, 255, 1)">if</span>(arr.length &lt;= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">) {
      </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> arr
    };
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> mNumIndex = Math.floor(arr.length/<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">);
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> mNum = arr.splice(, <span style="color: rgba(128, 0, 128, 1)">1</span>)[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">];
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> left =<span style="color: rgba(0, 0, 0, 1)"> [];
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> right =<span style="color: rgba(0, 0, 0, 1)"> [];
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; arr.length; i++<span style="color: rgba(0, 0, 0, 1)">){
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (arr &lt;<span style="color: rgba(0, 0, 0, 1)"> mNum){
            left.push(arr)
      }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
            right.push(arr)
      };
    };
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> quickSort(left).concat(, quickSort(right));
}
console.log(quickSort(arr));</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>17. 阅读以下html和js代码,分别写出两段代码点击按钮后控制台的输出,并简述理由</p>
<div class="cnblogs_code">
<pre>&lt;button id=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">test</span><span style="color: rgba(128, 0, 0, 1)">'</span>&gt;click me &lt;/button&gt;

&lt;script&gt;<span style="color: rgba(0, 0, 0, 1)">
    function Button(){
      </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clicked = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
      </span><span style="color: rgba(0, 0, 255, 1)">this</span>.click =<span style="color: rgba(0, 0, 0, 1)"> function(){
            </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clicked = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
            console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
      }
    }
    let button </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Button();
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> elem = document.querySelector(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#test</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
    elem.addEventListener(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">'</span>,button.click); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> &lt;button id='test'&gt;click me &lt;/button&gt;</span>
<span style="color: rgba(0, 0, 0, 1)">
    let button </span>=<span style="color: rgba(0, 0, 0, 1)"> {
      clicked: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
      click:()</span>=&gt;<span style="color: rgba(0, 0, 0, 1)">{
            </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clicked = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
            console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
      }
    }
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> elem = document.querySelector(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#test</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
    elem.addEventListener(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">'</span>,button.click); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> window 对象</span>
&lt;/script&gt;</pre>
</div>
<p>理由:let 和 全局function 的区别</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code">&nbsp;</div><br><br>
来源:https://www.cnblogs.com/ranyihang/p/12212465.html
頁: [1]
查看完整版本: JavaScript面试题