一、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) // NaN 四、写出函数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;

结果:10(小心陷阱)

var str= "aaaebbbcccddd"; str = str.replace(/(.)\1+/g,'$1')

alert(str)

2.把字符串中所有单词的首字母都转换为大写
name = 'aaa bbb ccc'; uw=name.replace(/\b\w+\b/g, function(word){ return word.substring(0,1).toUpperCase()+word.substring(1);} );
alert(uw)

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面试题引起的讨论 
2012-02-05 23:58 
第一道:

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代码

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代码

<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代码

<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代码

<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代码

<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代码

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

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

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

<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代码

<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);

JS面试题及答案的更多相关文章

  1. 今日头条上看到的js面试题和答案

    用js判断字符中每个字符出现的次数, 答案是var info = arr.split('').reduce((a,b)=>(console.log(a,b),a[b]++ || (a[b]=1) ...

  2. JS面试题及答案总结

    1. 截取字符串abcdefg的efg  <div id="test">abcdefg</div> var mytext=document.getEleme ...

  3. 10个常见的Node.js面试题

    如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. ...

  4. Android 面试题及答案(2)

    1.Activity相关.launchmode,OnSaveInstnceState,生命周期等. 4种默认的launchmode,以及OnNewIntent的回调. OnNewIntent-> ...

  5. php面试题及答案收藏(转)

    php面试题及答案收藏(这套试题是在网上看到的,不知作者是谁) 基础题 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据, ...

  6. jQuery经典面试题及答案精选(转)

    jQuery是一款非常流行的Javascript框架,如果你想要从事Web前端开发这个岗位,那么jQuery是你必须掌握而且能够熟练应用的一门技术.本文整理了一些关于jQuery的经典面试题及答案,分 ...

  7. 2016最全的web前端面试题及答案整理

    面试web前端开发,不管是笔试还是面试,都会涉及到各种专业技术问题,今天小编整理了一些常见的web前端面试题及答案,希望对大家有所帮助. 1.常用那几种浏览器测试?有哪些内核(Layout Engin ...

  8. 所在实习公司的JS笔试题

    在班上无聊的时候看到了一份JS笔试题(我是电面进去的,没做过这份题~~),开始还觉得蛮简单......后来觉得还是很有意思的,贴出来一起看看. 题目一: if(!("a" in w ...

  9. 《招聘一个靠谱的iOS》面试题参考答案(下)

    相关文章: <招聘一个靠谱的iOS>面试题参考答案(上) 说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>,其中共55题,除第一题为纠错题外 ...

随机推荐

  1. $this是什么意思-成员变量和局部变量的调用

    关键字$this代表其所在的当前对象 使用当前对象的属性和方法 $this->取值 方法内的局部变量 不能用$this 关键字取值 /* 和java,c++相比 方法体内想访问调用者的属性,必须 ...

  2. PokeCats开发者日志(二)

      现在是PokeCats游戏开发的第四天的上午,来记录一下昨天做的事情吧. day3   day3主要是添加音效和优化界面,本以为添加个音效1~2个小时就够了吧,没想到贼不顺,弄了一个下午才搞好. ...

  3. Intellij Idea 创建Web项目入门

    相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan.baidu.com/s/1dEstJ5f Tomcat(ap ...

  4. js表单验证工具包

    常用的js表单验证方法大全 /* 非空校验 : isNull() 是否是数字: isNumber(field) trim函数: trim() lTrim() rTrim() 校验字符串是否为空: ch ...

  5. [LINUX]警告:检测到时钟错误。您的创建可能是不完整的。

    [LINUX]警告:检测到时钟错误.您的创建可能是不完整的.   原因:     如果上一次编译时为20071001,你把系统时间改成20070901后再编译就会报这样的错误. 解决:     把时间 ...

  6. win32 application怎么把结果输出到调试窗口

    方法1: TCHAR str[]; wsprintf(str, TEXT(); OutputDebugString(TEXT("-------lala------\n")); Ou ...

  7. 用JQuery的$.getJSON发起跨域Ajax请求

    jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callba ...

  8. idea中如何配置git以及在idea中初始化git

    idea中如何配置git以及在idea中初始化git呢: 参考此博文: http://blog.csdn.net/qq_28867949/article/details/73012300 *为了这个问 ...

  9. Firefox多国语言多OS离线安装包

    Download Firefox in your language Firefox is made in large part by volunteers around the world. That ...

  10. php函数-shuffle

    Shuffle()函数说明: -随机乱序现有数组并不保留键值: -shuffle()函数把数组中的元素按随机顺序重新排列,该函数为数组中的元素分配新的键名,已有键名将被删除. 语法说明: shuffl ...