测试你的JS的掌握程度的代码

代码如下:

<script type="text/javascript">
function doTest(s) {
document.writeln(s + " : " + eval(s) + "<br />");
}
doTest("null==undefined"); //1:
doTest('null==""'); //2:
doTest('null==0'); //3:
doTest('0==""'); //4:
doTest('false==0'); //5:
doTest('false==""'); //6:
doTest('true==0'); //7:
doTest('true==1'); //8:
doTest('true==-1'); //9:
doTest('false==null'); //10:
doTest(''); //11:
doTest('false==undefined'); //12:
doTest('-0===+0'); //13:
doTest('-0==+0'); //14:
doTest('-(-0)===0'); //15:
doTest('false===(!true)'); //16:
doTest('typeof(null)'); //17:
doTest('typeof(false)'); //18:
doTest('typeof(undefined)'); //19:
doTest('typeof(1)'); //20:
doTest('typeof(+1.1)'); //21:
</script>

怎么样?自己给自己打下分,总共22个题目,你对了多少个呢?
这些题目我也不知道应该去讲解,只是想让大家对自己做错的题目进行更深一步的思考、挖掘。
下面我们来公布答案吧:

代码


代码如下:

<script type="text/javascript">
function doTest(s) {
document.writeln(s + " : " + eval(s) + "<br />");
}
doTest("null==undefined"); //1:null==undefined : true
doTest('null==""'); //2: null=="" : false
doTest('null==0'); //3: null==0 : false
doTest('0==""'); //4: 0=="" : true
doTest('false==0'); //5:false==0 : true
doTest('false==""'); //6: false=="" : true
doTest('true==0'); //7:true==0 : false
doTest('true==1'); //8:true==1 : true
doTest('true==-1'); //9: true==-1 : false
doTest('false==null'); //10:false==null : false
doTest(''); //11: : undefined
doTest('false==undefined'); //12:false==undefined : false
doTest('-0===+0'); //13:-0===+0 : true
doTest('-0==+0'); //14:-0==+0 : true
doTest('-(-0)===0'); //15:-(-0)===0 : true
doTest('false===(!true)'); //16:false===(!true) : true
doTest('typeof(null)'); //17:typeof(null) : object
doTest('typeof(false)'); //18:typeof(false) : boolean
doTest('typeof(undefined)'); //19:typeof(undefined) : undefined
doTest('typeof(1)'); //20:typeof(1) : number
doTest('typeof(+1.1)'); //21:typeof(+1.1) : number
</script>

给大家留下一个问题:3||6&&9的运算结果是什么?
具体的分析可以看这里:&&和||运算
内容如下:
一直以为 && 和 || 这两个运算符只能在判断表达式时使用,一般就是常在if语句使用。前段时间在公司的磨刀行动的考核题目中,完全做错了。由于对这两个运算符不是很理解,只是简单的认为是一个判断表达式。当时考试的题目:3||6&&9的运算结果是什么?我居然写的是true!
今天在博客园里看到了对这两个讲解,认为很多人在这里还是存在误区的。所以也把他记了下来。
我们先不看答案,先来对&& 和 || 的理解。我记得在以前的计算机书上看到过这两个运算符,他们的优先级是:&&大于|| 。那&&又是怎么运算的呢?
exp1&&exp2:如果执行exp1后返回true,则执行exp2并返回exp2的值;如果执行exp1后返回false,则整个表达式返回exp1的值,exp2不执行;
exp1 || exp2:如果执行exp1后返回true,则整个表达式返回exp1的值,exp2不执行;如果执行exp1后返回false,则执行exp2并返回exp2的值;
那下面我们来看答案吧:
3||6&&9:先运算&&,由于6和9都大于0,即都为true,所以结果为 9。表达式变为3||9。由于3和9 都为true,则返回3。所以答案就是3。
由上面我又延伸几个问题:false==0,true==0,false==null,false==undefined,false==""他们的值 又是什么呢?
在末尾我在给大家留个问题:&和&& 他们之间又有什么区别呢?

(0)

相关推荐

  • 测试你的JS的掌握程度的代码

    复制代码 代码如下: <script type="text/javascript"> function doTest(s) { document.writeln(s + " : " + eval(s) + "<br />"); } doTest("null==undefined"); //1: doTest('null==""'); //2: doTest('null==0'); /

  • 封装好的js判断操作系统与浏览器代码分享

    摘要: 对于前端开发我们最重要的工作就是兼容性,系统的兼容性,浏览器的兼容性等等.今天分享一个我在项目中封装的判断操作系统与浏览器的方法. 操作系统: var os = (function() { var UserAgent = navigator.userAgent.toLowerCase(); return { isIpad : /ipad/.test(UserAgent), isIphone : /iphone os/.test(UserAgent), isAndroid : /andro

  • JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)

    本文实例讲述了JS实现滑动菜单效果代码.分享给大家供大家参考.具体如下: 这里实现一个特效将网页中的选项卡滑动门都集中到一个网页中来,有些同志曾经为同一个页面布置两个滑动门而烦恼,参考一下本例子,相信你会找到答案,而且有各种排列方式的选项卡,总有一款会满足你. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-move-tab-nav-menu-demo-style-codes/ 具体代码如下: <!DOCTYPE html PUBLIC &qu

  • js 奇葩技巧之隐藏代码

    昨天在群看到有人发了个文章叫<"短"化你的代码>,思路非常不错,采用unicode的零宽字符来实现字符隐藏,虽然有字符,可是你却看不见它. 这篇文章详细的介绍了这种方法的实现原理,最后还给出了一个生成工具. 当然,作者算了留了一个小小的练习给我们,因为他只用了两个字符,导致转换后的数据是原始数据的 8倍. 他给我们提供了4个零宽字符,我们就可以缩小至4倍. 好了,我们来看下代码吧. (function(window) { var rep = { // 替换用的数据,使用了4

  • js识别uc浏览器的代码

    其实挺简单的就是 if(navigator.userAgent.indexOf('UCBrowser') > -1) { alert("uc浏览器"); }else{ //不是uc浏览器执行的操作 } 如果想测试某个浏览器的特征可以通过如下方法获取 JS获取浏览器信息 浏览器代码名称:navigator.appCodeName 浏览器名称:navigator.appName 浏览器版本号:navigator.appVersion 对Java的支持:navigator.javaEn

  • 原生js实现each方法实例代码详解

    jquery里面有个each方法,将循环操作简化.便捷. 随后es出了个forEach方法,两个虽然用法相近,但是不能处理对象类型.且无法通过return true达到continue效果. 此外还有个every方法,该方法虽然可以实现continue效果,但是在处理类数组与对象类型时,完全无用. 在不使用 jquery 的 each 方法时,该如何处理:或者说用原生如何来实现? 前些前写了个类库: jTool , 其中就实现了该方法. 简单实现: // 通过字面量方式实现的函数each var

  • 动态加载js、css的实例代码

    一.原生js: /** * 加载js和css文件 * @param jsonData.path 前缀路径 * @param jsonData.url 需要加载的js路径或css路径 * @param jsonData.type 需要加载的类型 js或css */ function loadWriteFiles(jsonData) { jsonData.path = jsonData.path != undefined ? jsonData.path : ""; if(jsonData.

  • Bootstrap jquery.twbsPagination.js动态页码分页实例代码

    Bootstrap风格的分页控件自适应的: 参考网址:分页参考文档 1.风格样式: 2.首先引入js文件jQuery.twbsPagination.js <span style="font-size:14px;"><script type="text/javascript" src="plugins/page/jquery.twbsPagination.js"></script></span> 3.

  • js操作二级联动实现代码

    表结构 二级或多级联动主要是以数据库中具有父编号的表为基础,这个也不例外 id,parent_id,name 三列. 采用js操作 先说下数据在js中的存储方式. 主要用二维数组来存储数据.结构如下: a[父编号]=[[子编号1,子名称1],[子编号2,子名称2],[子编号3,子名称3],--]; 首先用父编号获取所有的子数据,在把子数据的编号及名称绑定在dropdown中 第一步 二级联动数据(后面说这些数据怎么得到) 复制代码 代码如下: var cities=new Array(); ci

  • JS判断时间段的实现代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <th>交易时间开始:</th> <td><input id="bcconDateBeginDate" name="bcconDateBeginDate" value="2016/06/12 00:00:00" class="easyui-datetimebox" editable="false" style=&

随机推荐