资讯专栏INFORMATION COLUMN

红皮书(2):基本概念

Brenner / 3357人阅读

摘要:数据类型中有种简单数据类型也称为基本数据类型和。尽管和有这样的关系,但它们的用途完全不同。这样做不仅可以体现作为空对象指针的惯例,而且也有助于进一步区分和。其次,与任何值都不相等,包括本身。

数据类型

ECMAScript中有5种简单数据类型(也称为基本数据类型):undefined,null,boolean,number和string。

typeof

typeof null会返回“object”。

undefined

对未初始化的变量执行typeof操作符会返回undefined,而对未声明的变量执行typeof操作符同样也会返回undefined。

var message;

alert(typeof message); // undefined
alert(typeof age); // undefined
null
alert(null==undefined); // true

这里,位于null和undefined之间的相等操作符(==)总是返回true。

尽管null和undefined有这样的关系,但它们的用途完全不同。如前所述,无论在什么情况下都没有必要把一个变量显式地设置为undefined,可是同样的规则对null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。

NaN

任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。

alert(NaN==NaN); // false
alert(isNaN(isNaN)); // true
alert(isNaN(10)); // false
alert(isNaN("10")); // false
alert(isNaN("blue")); // true
alert(isNaN(true)); // false
数值转换

Number(), parseInt(),parseFloat()

Number()函数的转换规则如下:

如果boolean值,true和false将分别被转换为1和0

如果是数字值,只是简单的传入和返回

如果是null值,返回0
4.如果是undefined,返回NaN

操作符 递增和递减操作符

执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的。(在计算机科学领域,这种情况通常被称为副效应)

var age = 29;
var anotherAge = --age +2;

alert(age); // 28
alert(anotherAge); // 30

由于前置递增和递减操作与执行语句的优先级相等,因此整个语句会从左至右被求值。

var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2; // 等于21
var num4 = num1 + num2; // 等于21

后置型递增和递减操作符的语法不变(仍然分别是++和--),只不过要放在变量的后面而不是前面。后置递增和递减与前置递增和递减有一个非常重要的区别,即递增和递减操作是在包含他们的语句被求值之后才执行的。

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 等于22
var num4 = num1 + num2; // 等于21
一元加和减操作符

在对非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。换句话说,布尔值false和true将被转换为0和1,字符串值会被按照一组特殊的规则进行解析,而对象是先调用它们的valueOf()和toString()方法,再转换得到的值。

var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
    valueOf : function(){
         return -1;
    }
}

s1 = +s1; // 1
s2 = +s2; // 1.1
s3 = +s3; // NaN
b = +b; // 0
f = +f; // 1.1
o = +o; // -1

一元减操作符只要用于表示负数,例如将1转换成-1。

一元加和减操作符只要用于基本的算术运算,也可以像前面的示例所展示的一样用于转换数据类型。

加性操作符 加法
var result1 = 5+5;
alert(result1); // 10

var result2 = 5+"5";
alert(result2); // "55"
减法
var result1 = 5 - true; //4
var result2 = NaN -1; // NaN
var result3 = 5-3; //2
var result4 = 5 - ""; //5
var result5 = 5 - "2"; // 3
var result6 = 5 - null; // 5
相等操作符
null == undefined; // true
"NaN" == NaN; // false
5 == NaN; // false
NaN == NaN; // false
NaN != NaN; // true
false ==0; // true
true == 1; // true
true == 2; // false
undefined ==0; false
null ==0; false
"5"==5; // true

记住:null == undefined会返回true,因为它们是类似的值;但null===undefined会返回false,因为它们是不同类型的值。

函数
function sum(num1, num2){
    return num1 + num2;
    alert("Hello world"); // 永远不会放弃
}

这个函数会在执行完return 语句之后停止并立即退出。因此,位于return 语句之后的任何代码都不会执行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87453.html

相关文章

  • 英特尔发布"概念验证"白皮书:AI人工智能落地,如何辅助决策者将价值最大化

    摘要:那么,什么样的机遇能够带来最好的结果如何确保能取得成功的结果呢英特尔为此提出了一套概念验证的解决方案,并且详细撰写了一套白皮书,能够帮助决策者回答这些问题,同时最大化价值,最小化风险。 showImg(http://upload-images.jianshu.io/upload_images/13825820-5ded473acf69a9d1.jpg?imageMogr2/auto-o...

    Leck1e 评论0 收藏0
  • 区块链从根本上重新塑造人与人之间,人与物质世界之间的关系

    摘要:区块链是软件开源运动所结出的果子。原因是区块链创造的信任是基于代码产生的。 上一讲中,我们深入探讨了区块链对一些基本问题的答案,包括对时间的答案、对空间的答案以及对能量的答案。在这一篇文章中,我们将从区块链作为基本工具的工具论方面切入。这个方面包括了它是怎样看待这个世界的:它使用了哪些工具,以及它使用了哪些方法?构造了哪些全新的博弈环境并形成了哪些新的博弈均衡态?这些方法也许和人们过去...

    Shisui 评论0 收藏0
  • 区块链正在重塑法律(上)

    摘要:秘猿科技法务总监钱靖受邀参加北京大学数字金融研究中心举办的数字金融第十讲,作为主讲嘉宾就区块链正在重塑法律做了主题演讲。而区块链在很大程度上可以帮助解决这些问题。第三个方面涉及到区块链对每个部门法的影响。 showImg(https://segmentfault.com/img/bVboMSK?w=1280&h=543); 秘猿科技法务总监钱靖受邀参加北京大学数字金融研究中心举办的数字...

    wendux 评论0 收藏0
  • 区块链概念 That You Must Know 第一期.md

    摘要:而比特币,是由中本聪化名提出,一种点对点,去中心化的数字资产。比特币预计共有万枚,大约将在年发行完毕。比特币电子现金系统解决了在没有中心机构的情况下,总量恒定的数字资产的发行和流通问题。比特币通过比特币系统进行转账,全网记录公开透明。 第一期 比特币与中本聪 卡酷少Wechat:13260325501 说起区块链,就不得不提比特币。也正是因为比特币市场的火热,比特币系统的去中心化概...

    zorro 评论0 收藏0
  • JavaScript 原型中的哲学思想

    摘要:而作为构造函数,需要有个属性用来作为以该构造函数创造的实例的继承。 欢迎来我的博客阅读:「JavaScript 原型中的哲学思想」 记得当年初试前端的时候,学习JavaScript过程中,原型问题一直让我疑惑许久,那时候捧着那本著名的红皮书,看到有关原型的讲解时,总是心存疑虑。 当在JavaScript世界中走过不少旅程之后,再次萌发起研究这部分知识的欲望,翻阅了不少书籍和资料,才搞懂...

    sugarmo 评论0 收藏0

发表评论

0条评论

Brenner

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<