1. var a; typeof a;  控制台输出结果是什么?

解答:a只被声明,而未被初始化,在javascript中,未初始化的变量默认值都为undefined;

2. var s="1s";s++ 控制台输出结果是什么?

解答:s="1s"为字符串类型,如果字符串遇到算术运算符,可以强制转换为number类型,但是,1s无法转换成number,因而会转成NaN类型;

     此时,s++相当于NaN类型加1,结果仍然是NaN;

备注:

假设,s="1";(此时,字符串1可以被转化成为number 1),然后 s++;

控制台应该先打印s的原始值,然后加1;

3. typeof -Infinity 控制台输出结果是什么?

解答: Infinity类型值虽然表示 正负无穷的意思,但它仍然是一个数,因而其类型一定是number;

4. 10%"0" 控制台输出结果是什么?

解答:a%b 代表的意思是a整除b余数是多少,因而b作为除数;

"0"遇到算术运算符%时自动转为数0,此时0作为除数,结果输出NaN;

5. undefined==null , undefined===null 控制台输出结果是什么?

false=="" , false==="" 控制台输出结果是什么?

  解答:undefined==null (true) , false==""(true)

根据相等运算符定义,两边操作数会被自动转换为相同类型,然后进行比较;

这里,undefined和null的类型都是Object,但是至于为什么二者最终被判定为相等,我很疑惑。

            false和""在比较之前,会先将""转换为布尔型,对应为false,因而等式两边都是false,值也相等;

    至于,undefined===null 和false==="" 控制台都输出false

    因为===代表的是等价运算,要求等式两边的操作数不仅要类型相同,而且要求数值相同才会返回true

6. undefined和null的区别与联系

通常情况下,当我们试图访问某个不存在的或者未赋值的变量时,就会得到一个undefined值。JavaScript会自动将生命时没有进行初始化的变量设为undefined。

例如:   >>> foo

foo is no defined;  (或者,尽管声明了变量,但未初始化,改变量仍然被设为undefined)

而null值不能通过JavaScript来自动赋值,只能通过代码中赋值语句来完成。

  例如: var somevar=null;

重要区别:null和undefined在被转换为其他基本类型时,方法存在一定的区别;

转换为数字:

>>> 1*undefined

        NaN  (说明undefined被转换为NaN类型)

         >>> 1*null

0 (说明null被转换为0)

   转换为布尔型:

      >>> !!undefined

      false

      >>>!!null

      false    (说明在转换为布尔型值时二者表现一样)

     转换为字符串:

      >>> ""+null

      "null"

      >>> ""+ undefined

      "undefined"  (二者既有相同也有区别,相同的是都是将其类型和字符串拼接,不同的是二者类型不同)

7. var v=v||10; 控制台输出什么?

  解答:首先,解释||(逻辑或)运算。只要||两边的操作数任一为true,则运算结果为true;

     其次,解释惰性求值。在一个连续的逻辑操作中,操作结果在最后一个操作完成之前就已经明确了的话,那么该操作往往不必再继续执行了,因为这已经不会对最终结果产生任何影响。

例如, >>> true||false||true||false

true  (在第一个true出现时,已经可以决定运算的结果,因而后续判断不再执行)

       例2: >>> true||"something"

true  (在判断逻辑或左边为true时,中断运算,输出true)

>>> "something"||true

"something"

         >>> "something"||false

"something"   (先将"something"转换为布尔型,判断其为true,中断运算,输出"something")

     因而,var v=v||10;此时 v是undefined,转换为布尔型为false,仍需要判断逻辑或右边的10,10转换为布尔型为true,因而运算结果为10,并且10被赋值给v,控制台输出v等于10;

备注:  如果将v分别设置为100,0,null结果又将是什么?

     测试1: var v=100; v=v||10;

         输出结果 100;

       测试2: var v=0; v=v||10;

          输出结果 10;

       测试3: var v=null; v=v||10;

          输出结果 10;

       上述例子证明了例2中的陈述;

        

JavaScript基本数据类型(较易混淆的几个概念)的更多相关文章

  1. JavaScript中易混淆的DOM属性及方法对比

    JavaScript中易混淆的DOM属性及方法对比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:该属性继承 ...

  2. 【C#小知识】C#中一些易混淆概念总结---------数据类型存储,方法调用,out和ref参数的使用

    这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框架类库) 这些类是微软 ...

  3. JavaScript 进阶(五)易混淆概念null vs undefined, == vs ===, string vs String

    先看一段代码 var foo = {} foo.a = null alert(foo.a == null)     //true alert(foo.a === undefined)  //false ...

  4. C#中一些易混淆概念总结

    C#中一些易混淆概念 这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框 ...

  5. a链接易混淆与form表单简易验证用法详解

    链接可以说遍布互联网,比如你想提供一个可以跳转到百度首页的链接给网友,那么代码如下: <a href="http://www.baidu.com">百度一下,你就知道& ...

  6. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  7. 【C#小知识】C#中一些易混淆概念总结(六)---------解析里氏替换原则,虚方法 分类: C# 2014-02-08 01:53 1826人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  8. 【C#小知识】C#中一些易混淆概念总结(五)---------继承 分类: C# 2014-02-06 22:05 1106人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  9. 【C#小知识】C#中一些易混淆概念总结(五)---------深入解析C#继承

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

随机推荐

  1. mysql导入大文件sql

    备份mysqldump mysqldump -u root -p ao2012 > /mnt/www/zq_ao2012/backup.sql 然后数据库密码 导入 mysql -h local ...

  2. 双十二前夕爆京东12G数据泄露的真相是什么

    今天早上手机上推送出京东12g数据泄漏的消息,随即搜了下网上的相关新闻,感觉舆论又一次的干了一件惊天地的事情,到底京东的哪所谓的12G的用户信息数据有没有泄漏?舆论为什么齐刷刷的在12月11日突然间爆 ...

  3. nginx开启日志,指定格式,查看执行时间

    nginx配置: access_log on; log_format access '$remote_addr – $remote_user [$time_local] "$request& ...

  4. ElasticSearchwindow下搭建

    ElasticSearch是一个开源的分布式搜索引擎. 下载 下载地址: https://www.elastic.co/downloads/elasticsearch 当前版本:Elasticsear ...

  5. JMeter学习-023-JMeter 命令行(非GUI)模式详解(一)-执行、输出结果及日志、简单分布执行脚本

    前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行 ...

  6. jquery使用注意点以及建议

    jquery是一个非常优秀的js框架,相信大部分人都用过,也都非常熟悉它的应用,用起来也非常简单,基本的操作也都不用说了.这里不在罗列jquery的api,总结下需要注意的点,都是平时容易犯错误的地方 ...

  7. 三、oracle数据库成功安装步骤 Oracle数据源配置

      安装完Oracle驱动后,如需连接远程Oracle数据库,还需进行数据源配置,类似Windows下的ODBC数据源配置. 运行"开始菜单\Oracle - OraDb11g_home1\ ...

  8. 运行maven项目

  9. Android下Cocos2d创建HelloWorld工程

    最近在搭建Cocos2d的环境,结果各种问题,两人弄了一天才能搞好一个环境-! -_-!! 避免大家也可能会遇到我这种情况,所以写一个随笔,让大家也了解下如何搭建吧- 1.环境安装准备 下载 tadp ...

  10. EXC_ARM_DA_ALIGN

    ios 版本上的问题  armv7  ipad2 int64 t = *(int64*)pBuff; 如果pBuff不是8字节对齐的地址就 crash 变通的方法是通过memcpy __sync_fe ...