javaScript基本数据类型

我们知道JavaScript有ECMAScript、DOM、BOM三部分组成,下面一幅图可以简单明了的说明JavaScript的组成。


注:ECMAScript(European Computer Manufacturers Association)是由一种Ecma国际前身为欧洲计算机制造商协会制定的标准。简单来说,ECMAScript不是一门语言,而是一个标准。
ECMAScript中有5种简单数据类型,也称为基本数据类型:Undefined、Null、Boolean、String、Number。学习这些之前,需要先了解typeof操作符。
typeof的作用是判断给定数据的类型。具体用法见下面代码:

//1: typeof(直接量/变量)
console.log(typeof ("哈哈哈")); // string
console.log(typeof(13)); // number

// 2: typeof 直接量/变量
console.log(typeof "你好"); // string
console.log(typeof 23);  // number

一、Undefined类型

Undefined类型只有一个值undefined,如果一个变量只有声明,没有赋值,那它的结果就是undefined,页面上不会报错。
对于尚未声明的对象,只能执行一项操作,即使用typeof操作符检测其数据类型。

<script type="text/javascript">
    // 如果一个变量只有声明,没有赋值,那它的结果就是undefined,页面上不会报错
    var a;
    console.log(a); // undefined
    console.log(typeof a); // undefined

    var b
    console.log(typeof b); // undefined 
    </script>

结果表明:对未初始化和未声明的变量执行typeof操作都返回了undefined值。

二、Null类型

Null类型:空对象,也是只有一个值:null。从逻辑角度讲,null值表示一个空对象指针,而这也正是使用typeof操作符检测其类型返回"object"的原因。undefined是派生自null,所以,它们相等性测试结果返回true。它有一个很常用的用处:如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null。

<script>
    console.log(typeof null); // object

    var a = null;
        if (a) {
            alert("true");
        } else {
            alert("false");
        }  // 返回false

        if (null == undefined) {
            console.log("undefined值是派生自null")
        }
</script>

三、Boolean类型

Boolean类型有两个字面值,分别是true、false。虽然它只有两个值,但是任何类型都可以转换成Boolean,数据类型及其转换规则如下图:



总结出来即是:除了false、""、NAN、0、Undefined、Null转换为Boolean的时候结果是false,其余都是true。

四、String类型

1、String:即字符串,简单来说就是用引号引起来的文本,可以是单引号,也可以是双引号。字符串长度用length表示。ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它的值就不能改变,如果改变了字符串,编译不会出现问题,但是内存会出现问题,特别影响性能。
要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,例如:
var str = "12"; str = str + "ab";

2、字符字面量:String类型包含一些特殊的字符字面量,也叫转义字符,比如\n表示换行、\b表示退格、\表示斜杠、'表示单引号、''表示双引号等。如果字符串中,包含双字节字符,length属性可能不会精确地返回字符串中的字符数目。

3、如果字符串中出现引号:

  • 如果字符串中出现双引号,可以把字符串的引号改成单引,反之,亦然
  • 使用转义符
<script>
        // 括号里面直接用的数据,叫做直接量
        alert("123");
        alert("1abv");
        alert('你好');
        // alert(abc); // 不是字符串,控制台会出现报错

        alert("我说:“你好”"); //不会出错
        // alert("you say:"today is a good day"");  // 会报错,可以改成如下
        alert('you say:"today is a good day"');

        alert("you say: \n \'hello\ \"world\" \b \"你好\"");
    </script>

五、Number类型

1、Number类型即是数值,分为浮点数值和整数数值,这里不再做过多说明,下面讲一下数值范围。
由于内存限制,ECMAScript并不能保存所有的数值类型,最小值保存在Number.MIN_VALUE,最大值保存Number_MAX_VALUE中,如果超过范围,会被自动转换成特殊的inFinity(正无穷)和-inFinity(负无穷)。可以用isFinite()函数来判断数值是否在最大值和最小值之间。

<script>
        console.log(isFinite(123)); // true
        var s = Number.MAX_VALUE + Number.MAX_VALUE;
        console.log(isFinite(s)); // false
        console.log(maxSum); // infinity(正无穷)

</script>

2、NaN
NaN(not a number)即非数值,是number的一种,用来表示数值的一种不正常的状态,一般情况下,会在数值计算错误的时候出现,它特殊到自己不等于自己。判断当前的数据是否是NaN的函数isNaN(),参数可以是任何数值,该函数可以帮确定这个参数是否“不是数值”,它在接到一个参数后,会尝试将这个值转换为数值,,函数返回false。某些不是数值的值会直接转换为数值,而不能被转换成数值的参数,会导致这个函数返回true。


<script>
         console.log(isNaN(NaN));   // true
         console.log(isNaN(10));    // false(10是一个数值)
         console.log(isNaN("10"));  // false(可以被转换成数值10)
         console.log(isNaN(true));  // false (可以被转换常数值1)
         console.log(isNaN(false)); // false(可以被转换成数值0)
         console.log(isNaN("你好")); // true(不能被转换成数值)
</script>

六、String、Number使用注意

  • 如果两个字符串用+相连,那加号的作用是连接这两个字符串
  • 如果两个数值用+相连,那么加号的作用是两个数值相加
  • 如果加号连接的两个直接量中有一个是字符串,那么作用就是连接
<script>
         console.log("我+sayHi"); // 我+nihai
         console.log("我"+"sayHi"); // 我nihai 

         var a = 123;
         var b = "123";
         console.log(a + a + a + b); // string "369123"
         console.log(b + a + a + a); // string "123123123123"
</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容