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) // 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)
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面试题及答案的更多相关文章
- 今日头条上看到的js面试题和答案
用js判断字符中每个字符出现的次数, 答案是var info = arr.split('').reduce((a,b)=>(console.log(a,b),a[b]++ || (a[b]=1) ...
- JS面试题及答案总结
1. 截取字符串abcdefg的efg <div id="test">abcdefg</div> var mytext=document.getEleme ...
- 10个常见的Node.js面试题
如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. ...
- Android 面试题及答案(2)
1.Activity相关.launchmode,OnSaveInstnceState,生命周期等. 4种默认的launchmode,以及OnNewIntent的回调. OnNewIntent-> ...
- php面试题及答案收藏(转)
php面试题及答案收藏(这套试题是在网上看到的,不知作者是谁) 基础题 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据, ...
- jQuery经典面试题及答案精选(转)
jQuery是一款非常流行的Javascript框架,如果你想要从事Web前端开发这个岗位,那么jQuery是你必须掌握而且能够熟练应用的一门技术.本文整理了一些关于jQuery的经典面试题及答案,分 ...
- 2016最全的web前端面试题及答案整理
面试web前端开发,不管是笔试还是面试,都会涉及到各种专业技术问题,今天小编整理了一些常见的web前端面试题及答案,希望对大家有所帮助. 1.常用那几种浏览器测试?有哪些内核(Layout Engin ...
- 所在实习公司的JS笔试题
在班上无聊的时候看到了一份JS笔试题(我是电面进去的,没做过这份题~~),开始还觉得蛮简单......后来觉得还是很有意思的,贴出来一起看看. 题目一: if(!("a" in w ...
- 《招聘一个靠谱的iOS》面试题参考答案(下)
相关文章: <招聘一个靠谱的iOS>面试题参考答案(上) 说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>,其中共55题,除第一题为纠错题外 ...
随机推荐
- LaTex标准article文件框架解析
新建一个LaTex-Article文件 生成的文件框架代码 % ---------------------------------------------------------------- % A ...
- To Chromium之版本管理
Git. 1.由于想直接submit到Chromium的官方Branch需要申请权限,目前拿不到,所以打算snapshot一个chromium版本. 本地搭建一个git的server/client,方 ...
- 对于response.setContentType(MIME)的解释
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据.例如web浏览器就是通过MIM ...
- 有用的Java注解
好处: 能够读懂别人的代码,特别是框架相关的代码: 让编程更加简洁,代码更加清晰. 使用自定义注解解决问题!! Java1.5版本引入. Java中的常见注解 @Override:告诉使用者及编译器, ...
- 利用FFT来进行字符串匹配
给定串A和串B,A由26个小写字母构成,B由?和26个小写字母构成 ?可以和任意字符匹配 求A中出现了多少次B 这里可以使用fft做法,定义向量A和向量B 然后求A和rev(B)的卷积结果C C的第i ...
- 关于session variables 和 global variables
背景 有同学问到这样一个问题:原来的binlog格式是statement,为什么执行了 set global binlog_format='row' 和 set binlog_format='row' ...
- Codeforces Round #525 (Div. 2)A. Ehab and another construction problem
A. Ehab and another construction problem 题目链接:https://codeforc.es/contest/1088/problem/A 题意: 给出一个x,找 ...
- mmall项目之问题一(mavenplugin问题)
在进行mybatis逆向工程到时候,报错,提示maven plugin 错误,提示missing..... 解决办法: 因为之前到pom中忘记了加版本信息,添加后错误消失:
- centos的网络设置问题
遭遇了多次centos的网络连接问题,现将正确配置总结下: 这里是使用vmware虚拟平台,因为涉及到中间这层,所以需要设置下: 保证centos也能连上网,首先物理机连上网,接着物理机的vmware ...
- css实现九宫格图片自适应布局
我之前写九宫格自适应布局的时候,每个格子是使用媒体查询器(@media)或者js动态设置css,根据不同的手机屏幕宽度,适配不同手机,但是这样有个很大的缺点,那就是移动端的屏幕尺寸太多了,就得写很多代 ...