`
T240178168
  • 浏览: 368050 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JS面试题及答案

    博客分类:
  • JS
阅读更多
一、JS闭包。
f = function() {return true;};  
g = function() {return false;};  
(function() {  
   if (g() && [] == ![]) {  
      f = function f() {return false;};  
      function g() {return true;}  
   }  
})();  
alert(f()); // true or false ? 
------------------------
答案:
(function() {    
   if (g() && [] == ![]) {    
//应该看成if((g() && [] )== ![])  
//因为g()是false后面那个&&[]就没起作用 整个都是false   
//![]也是false 所以if成立 进入if块内  
      f = function f() {return false;};    
//重新定义f   
      function g() {return true;}    
//这句没用  
   }    
})();   
alert(f());  
//false 

二、截取字符串abcdefg的efg
abcdefg
    <script type="text/javascript">
  var mytext=document.getElementByIdx_x_x("text");
  var myvalue=mytext.innerHTML;
  var jiequ=myvalue.substring(myvalue.length-3,myvalue.length);
  alert(jiequ)
</script>

三、写出一下运算结果
alert(typeof(null))  // object
alert(typeof(undefined))  // undefined
alert(typeof(NaN))  // number
alert(NaN==undefined)  // false
alert(NaN==NaN)  // false
var str="123abc";
alert(typeof(str++)) // number
alert(str) // string

四、写出函数DateDemo的返回结果,系统时间假定为今天
function DateDemo(){
var d, s="今天日期是:";
d = new Date();
s += d.getMonth() + "/";
s += d.getDate() + "/";
s += d.getYear();
return s;
}

结果:今天日期是:7/17/2010

五、写出程序运行的结果?
for(i=0, j=0; i<10, j<6; i++, j++){
k = i + j;

1.以下哪个在JAVASCRIPT中会报错:
var a=();
var a=[];
var a={};
var a=//;
2.JAVA中有哪些保留字,越多越好,10个以上.
3.CSS中有几种声明方式.
4.写出你所知道的开源项目或软件,并说明他们的好处以及作用.
最佳答案
1,var a=();var a=//; 报错     两个不行!
  ---------------------------------
2,JAVA!
int  char  while  for  do  switch  void  double  float  unsigned  long  try  abstract   super  extent  bool  break  case  catch  class  delegate foreach in   static  void  public private protected internal  等等  太多了 
3,    这题有点不知道怎么答,到底声明是什么意思? 
是声明一个已经存在一个CSS有三种:   
1.导入一个已经存在的CSS文件 
<link rel="stylesheet" type="text/css" href="">   
2.直接在HARD里声明一个CSS代码段:
<style type="text/css">   
   .....  </style>  
3.直接在网页元素里声明使用CSS:  style="color:red;"    如果是声明CSS类 , 则有三种:  直接标签名作为CSS类名称:  TagName{ ... }  以元素ID作为CSS类声明:    #ID{...}  自定义CSS类名称 :         .ClassName{}  
--------------------------------------------------------------
4,开源的    客户端脚本的话就说说 ExtJS    她可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应 用中。  而且,使用这个框架可以直接用一行代码实现非常漂亮的而且标准的网页控件界面,可以使用代码调用的控件来替代目前的流行网页布局,和WinForm程序一样,使得前端开发完全控件化。  Jquery也是优秀的前台框架,优点:  代码简练、语义易懂、学习快速、文档丰富。    jQuery是一个轻量级的脚本,其代码非常小巧,最新版的JavaScript包只有20K左右。    jQuery支持CSS1-CSS3,以及基本的xPath。    jQuery是跨浏览器的,它支持的浏览器包括IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+。    可以很容易的为jQuery扩展其他功能。    能将JS代码和HTML代码完全分离,便于代码和维护和修改。    插件丰富,除了jQuery本身带有的一些特效外,可以通过插件实现更多功能,如表单验证、tab导航、拖放效果、表格排序、DataGrid,树形菜单、图像特效以及ajax上传等。     除此之外,还有ProtoType,Bindows(JS框架)   服务,ZedGragh(.Net做统计图的),Spring,Hibernate,Structs,EJB,Jbmp等比较有名的
网易JS面试题引起的讨论

第一道:

var tt = 'aa'; 
function test(){ 
alert(tt);  //underfined;
var tt = 'dd'; 
alert(tt);  //dd

test(); 


第二道:

var myObject= {
  num: 2,
  add: function(){
  this.num=3;
  (function(){
  alert(this.num);  //underfined
  this.num=4;
  })();
alert(this.num)   //3
  }
}

myObject.add();


本文主要是讲预编译。

1. undefined
当需要判断一个变量是否为 undefined 时,直接用
Js代码

  1. alert(om == undefined);  

alert(om == undefined);


可能出错。因为 JS 如果引用未声明的变量,那么会出现JS错误,在上述例子中,如果 om 未曾声明,就会报 JS 错误。因此判断一个变量是 undefined,最好用这种方法
Js代码

  1. alert( typeof om == 'undefined' );  

alert(typeof om == 'undefined');



2. JS 中没有块作用域,在函数中声明的变量在整个函数中都可用(无论是在函数开头处声明还是末尾处声明),如
Js代码

  1. function () {  
  2. alert(om); // 显示 undefined  
  3. var om = 'abc' ;  
  4. alert(om); // 显示 abc  
  5. }  

function() {
  alert(om); // 显示 undefined
  var om = 'abc';
  alert(om); // 显示 abc
  }



3. JS 在函数执行前将整个函数的变量进行声明,无论这个变量的声明语句有没有机会执行,如
Js代码

  1. function () {  
  2. alert(om); // 显示 undefined  
  3. if ( false ) {  
  4. var om = 'abc' ; // 此处声明没有机会执行  
  5. }  
  6. }  

======================================================================

今天工作需要,搜索下JS面试题,看到一个题目,大约是这样的
Js代码

  1. <script>  
  2. var x = 1, y = z = 0;  
  3. function add(n) {  
  4. n = n+1;  
  5.   }  
  6.  
  7. y = add(x);  
  8.  
  9. function add(n) {  
  10. n = n + 3;  
  11. }  
  12.  
  13. z = add(x);  
  14. </script>  

<script>
  var x = 1, y = z = 0;
  function add(n) {
  n = n+1;
  }

  y = add(x);
   
  function add(n) {
  n = n + 3;
  }

  z = add(x);
</script>



问执行完毕后 x, y, z 的值分别是多少?

仔细看的人马上就知道了, x, y 和 z 分别是 1, undefined 和 undefined。

不过,如果将两个 add 函数修改一下,题目变为
Js代码

  1. <script>  
  2. var x = 1, y = z = 0;  
  3. function add(n) {  
  4. return n = n+1;  
  5.   }  
  6.  
  7. y = add(x);  
  8.  
  9. function add(n) {  
  10. return n = n + 3;  
  11. }  
  12.  
  13. z = add(x);  
  14. </script>  

<script>
  var x = 1, y = z = 0;
  function add(n) {
  return n = n+1;
  }

  y = add(x);
   
  function add(n) {
  return n = n + 3;
  }

  z = add(x);
</script>


那么这时 y 和 z 分别是什么呢?我马上想到是 2 和 4,不过结果却是 4 和 4。
这说明,在第一次调用 add 函数之前,第二个 add 函数已经覆盖了第一个 add 函数。原来,这是 JS 解释器的"预编译",JS 解析器在执行语句前会将函数声明和变量定义进行"预编译",而这个"预编译",并非一个页面一个页面地"预编译",而是一段一段地预编译,所谓的段就是一个 <script> 块。且看下面的代码
Js代码

  1. <script>  
  2. function add(n) {  
  3. return n = n+1;  
  4.   }  
  5. alert(add(1));  
  6. </script>  
  7.  
  8. <script>  
  9. function add(n) {  
  10. return n = n+3;  
  11.   }  
  12. alert(add(1));  
  13. </script>  

<script>
  function add(n) {
  return n = n+1;
  }
  alert(add(1));
</script>

<script>
  function add(n) {
  return n = n+3;
  }
  alert(add(1));
</script>



会分别弹出 2 和 4。

那么,将上面的题目再变换一下,如下
Js代码

  1. <script>  
  2. alert( typeof addA);  
  3. addA();  
  4. function addA() {  
  5. alert( "A executed!" );  
  6. };  
  7. </script>  
  8. <script>  
  9. alert( typeof addB);  
  10. addB();  
  11. var addB = function () {  
  12. alert( "B executed!" );  
  13. };  
  14. </script>  

<script>
  alert(typeof addA);
  addA();
  function addA() {
  alert("A executed!");
  };
</script>
<script>
  alert(typeof addB);
  addB();
  var addB = function() {
  alert("B executed!");
  };
</script>



执行结果是什么呢? 按照前面的知识,第一个 <script> 块执行正常,结果就是弹出 "function" 和 "A executed!" 的对话框。
那么第二个 <script> 块呢? 执行结果是弹出 "undefined" 的对话框后报 JS 错误,说 addB 不是一个 function。
有点出乎意料?呵呵,其实第一个 script 块中的 addA 一句是函数声明,当然进行了"预编译",但是第二个 script 块中的 addB 一句并非函数声明。只不过在执行这段 <script> 之前对变量进行了"预声明",因此一开始变量addB是存在的,只不过是 undefined 的(可参看http://eclipse07.javaeye.com/admin/blogs/484566 )。因此执行结果便如上面所示。

将题目再变化下,如下
Js代码

  1. <script>  
  2. alert( typeof addB);  
  3. addB();  
  4. var addB = function addB() {  
  5. alert( "B executed!" );  
  6. };  
  7. </script>  

<script>
  alert(typeof addB);
  addB();
  var addB = function addB() {
  alert("B executed!");
  };
</script>


执行结果如何呢?
在 ff 下执行,与上面执行结果一样。打住,且在 IE6 下执行看看如何。
结果是弹出 "function" 和 "B executed!",一切正常。
Google 了一下,有人说这是 IE 的 BUG。

那么,请看下面的代码
Js代码

  1. <script>  
  2. alert( typeof addB);  
  3. var addB = "variable" ;  
  4. function addB() {  
  5. alert( "function addB" );  
  6. }  
  7. alert(addB);  
  8. </script>  

<script>
  alert(typeof addB);
  var addB = "variable";
  function addB() {
  alert("function addB");
  }
  alert(addB);
</script>


执行结果是"function"和"variable"。
JS解析器先预定义了 addB 变量为 undefined, 但是 addB 函数覆盖了此变量,因此一开始执行结果是 function,然后 addB 被赋值为 "variable",因此最后执行结果是 "variable",上面的代码即使变为
Js代码

  1. <script>  
  2. alert( typeof addB);  
  3. function addB() {  
  4. alert( "function addB" );  
  5. }  
  6. var addB = "variable" ;  
  7. alert(addB);  
  8. </script>  

<script>
  alert(typeof addB);
  function addB() {
  alert("function addB");
  }
  var addB = "variable";
  alert(addB);
</script>


结果也一样,这说明JS解析器先预声明变量,再预定义函数 。
小结一下:JS 在执行前会进行类似"预编译"的操作,而且先预定义变量再预定义函数。








1、form中的input有哪些类型?各是做什么处理使用的?
2、table标签中border,cellpadding     td标签中colspan,rowspan分别起什么作用?
3、form中的input可以设置readonly和disable,请问这两项属性有什么区别?
4、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?

1、form中的input有哪些类型?各是做什么处理使用的?
text   radio   checkbox   file   button   image   submit   reset   hidden
2、table标签中border,cellpadding     td标签中colspan,rowspan分别起什么作用?
border边界
cellpadding边距
colspan跨列数
rowspan跨行数
3、form中的input可以设置readonly和disable,请问这两项属性有什么区别?
readonly不可编辑,但可以选择和复制
disable不能编辑复制选择
4、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
alert
confirm
prompt





var Prize = new Array();
Prize[0]="对讲机";
Prize[1]="5Q币";
Prize[2]="地下城与勇士礼包";
Prize[3]="10Q币";
Prize[4]="QQ飞车礼包";
Prize[5]="1Q币";
function startLuckDraw(){
    //verify();
    var number = document.fm.name.value;   
    var xmlhttp=getXMLHttp();
    xmlhttp.open("GET","select.php?number="+number,true);
    xmlhttp.send();
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            if(xmlhttp.responseText=="1")
            {
                alert("一个身份证号码只能抽一次奖");
            }
            else
            {
                start();
            }
        }
      }
}
function start()
{
            var t=parseInt(18*Math.random());
            if(t==18){t=0}
            for(var i=0;i<18;i++)
            {
                document.getElementById("Prize"+i).className = "";
            }
                document.getElementById("Prize"+t).className="choose";
               document.fm.displayBox.value=t;
               meter=setTimeout("start()",100);
}
function endLuckDraw(){

    clearTimeout(meter);
    var x= document.fm.displayBox.value;
    var number = document.fm.name.value;
    var request=getXMLHttp();

    request.open("GET","add.php?number="+number+"&prize="+Prize[x],true);
    request.send();
    if(Prize[x]!="谢谢参与"){
    alert("恭喜您获得了奖品:"+Prize[x]+"!");}
    else {alert("谢谢参与!")}

}

function getResult(){
    var t = document.getElementsByTagName("ul")[0].firstChild;
    var x = Number(document.getElementById("count").value);
    var newNode = document.createElement("li");
    var request=getXMLHttp();
    request.open("GET","select2.php?id="+x,true);
    request.send();
    request.onreadystatechange=function(){
    if (request.readyState==4 && request.status==200)
        {
            if(request.responseText){
            var text = document.createTextNode(request.responseText);
            newNode.appendChild(text);
            document.getElementById("number").insertBefore(newNode,t);
            document.getElementById("count").value=x+1;
            }
            //document.getElementById("123").innerHTML = request.responseText;   
        }
    }
}
    function verify(){ 
            var phone = document.fm.name.value; 
            var tmp = /^1[3-9]\d{9}$/;     //支持11位手机号码验证 
            var flag=tmp.test(phone); 
            if(!flag){ 
               alert("手机号输入不合法"); 
               return false; 
               //startLuckDraw();   
            }
            else {
                startLuckDraw();   
            }       
    } 
function getXMLHttp(){
     var xmlhttp;
      try {
             // Mozilla / Safari / IE7
             xmlhttp = new XMLHttpRequest();
      } catch (e) {
           // IE
           var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
                                            'MSXML2.XMLHTTP.4.0',
                                            'MSXML2.XMLHTTP.3.0',
                                            'MSXML2.XMLHTTP',
                                            'Microsoft.XMLHTTP' );
       var success = false;
       for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
         try {
             xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
              success = true;
         } catch (e) {}
       }
       if (!success) {
        throw new Error('Unable to create XMLHttpRequest.');
     }
   }
   return xmlhttp;
   }
//创建创建一个XMLHttpRequest对象 

setInterval("getResult()",5000);
5
29
分享到:
评论

相关推荐

    JavaScript面试题及答案-共60道.docx

    JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共...

    JavaScript面试题及答案-共50道.docx

    javascript JavaScript面试题及答案-共50道.docx

    JavaScript面试题及答案-共80道.docx

    javascript JavaScript面试题及答案-共80道.docx

    vue经典面试题及答案.rar

    vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典面试题及答案.rar vue经典...

    91道js面试题,附必过答案.pdf

    为了提高 JavaScript 的性能,需要遵循严格模式、将 js 脚本放在页面底部、将 js 脚本将脚本成组打包、使用非阻塞方式下载 js 脚本、尽量使用局部变量来保存全局变量、尽量减少使用闭包、使用 window 对象属性方法时...

    Vue.js面试题整理带答案pdf_vue.js面试题及答案.pdf

    Vue.js 面试题整理带答案 Vue.js 是一个基于MVVM 模式的前端框架,它使用数据劫持结合发布者-订阅者模式来实现双向数据绑定。下面是 Vue.js 相关知识点的总结: 1. Vue 基础 * Vue 实例创建时,Vue 会遍历 data ...

    2023前端vue面试题及答案.pdf

    Vue.js 前端面试题及答案解读 本文对2023前端vue面试题及答案进行了详细的解读,涵盖了Proxy的使用、slot的理解和使用场景、优化大数据渲染的思路等多个方面。 一、Proxy的使用 Proxy是Vue 3.0中引入的一种机制,...

    前端面试题及答案.pdf

    本文档总结了前端面试题及答案,涵盖了 Vue.js 相关知识点,包括 Vuex 的五个核心概念、Vue 生命周期、Cookie、localStorage 和 sessionStorage 的区别等。 一、Vuex 的五个核心概念 Vuex 是一个专门为 Vue.js ...

    JavaScript 60道面试题及答案.docx

    JavaScript 面试题及答案知识点总结 本文档总结了 JavaScript 面试题及答案相关的知识点,涵盖了 HTTP 协议状态码、JavaScript 对象、sessionStorage 和 localStorage、cookie、Ajax、GC 机制、闭包、面向对象编程...

    100 道 JavaScript 面试题及答案.txt

    java面试题

    Vue.js面试题及答案大全(已经帮助大部分人面试成功)(十题)

    vue遇到的坑,如何解决的?...路由中引入静态js,全局组件,全局变量,全局function;v-for循环的key,value值互换了位置,还有track-by;filter过滤器;遍历数组时,key值不能做model;父子通信等。

    2019自己整理的前端工程师面试题题及答案(全面综合).doc

    2019年前端工程师面试题题及答案总结 面向前端开发工程师的面试题总结,涵盖了JavaScript、HTML、CSS等多方面的知识点。 1. 要动态改变层中内容可以使用的方法有(AB ) * innerHTML:用于设置或获取元素的内容 ...

    js常见经典面试题汇总

    ### JavaScript 常见经典面试题汇总解析 #### 1. JS的数据类型 JavaScript的数据类型主要分为两大类:**基本数据类型(primitive types)**和**引用数据类型(reference types)**。 - **基本数据类型**包括:`...

    模拟面试题及答案 Java

    选择了一些经常问到的java面试题,及建议答案,希望对各位面试者有用。 描述final﹑finally和finalize的区别。 编程题:使用JavaScript和HTML编写网页实现如图一所示计算功能: 购买总价=购买价格×购买数量。

    vue的面试题及答案2021.pdf

    Vue面试题及答案2021.pdf 本资源提供了 Vue 面试题及答案,涵盖 Vue 基础、双向数据绑定原理、MVVM、MVC、MVP 等知识点。 1. Vue 基础 * Vue 的基本原理:当创建 Vue 实例时,Vue 会遍历 data 中的属性,使用 ...

    (完整版)vue面试题及答案(最新整理).pdf

    Vue.js 面试题及答案详解 Vue.js 是一款流行的前端框架,广泛应用于前端开发。 本文将对 Vue.js 面试题及答案进行详细解释,涵盖 Vue.js 的基础原理、双向数据绑定的原理、MVVM 模式、MVC 模式、MVP 模式等知识点。...

Global site tag (gtag.js) - Google Analytics