美文网首页
21天(js高程)-第4天

21天(js高程)-第4天

作者: JerryChen_ | 来源:发表于2016-03-16 20:49 被阅读87次

1,注意:用var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中用var定义一个变量,那么这个变量在函数退出后就会被销毁。

2,省略var操作符可以定义全局变量。但在局部作用域中定义的全局变量很难维护,而且如果有意地忽略了var操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致抛出ReferenceError错误。

3,可以用一条语句定义多个变量,变量之间用逗号隔开。

4,在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。


3.4数据类型

ECMAScript中有5种基本数据类型(简单数据类型):Undefined,Null,Number,Boolean,String。

还有1种复杂数据类型:Object。Object本质上是由无序的名值对组成的。

所有值最终都将是上述6种数据类型之一(ECMAScript数据类型具有动态性)。

3.4.1 typeof操作符

typeof是操作符而不是函数,用于检测给定变量的数据类型。

调用typeof null,会返回"object",因为特殊值null被认为是一个空的对象引用。

从技术角度讲,函数在 ECMAScript 中是对象,不是一种数据类型。


3.4.2 Undefined类型

在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。

var message;//这个变量声明后默认取得了undefined值。
alert(message===undefined)//true

ECMA-262 第 3 版之前的版本中并没有规定这个值。第 3 版引入这个值是为了正式区分空对象指针与未经初始化的变量。

对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型(对未经声明的变量调用delete不会导致错误,但这样做没什么实际意义,而且在严格模式下确实会导致错误)。

var message;
alert(message)//显示“undefined”
alert(age);//发生错误

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

var message;
alert(typeof message) ;//"undefined"
alert(typeof age);//"undefined"


3.4.3 Null类型

null值表示一个空对象指针

var car=null;
alert(typeof car);//"object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

if(car!=null){
    //执行一些操作;
}

实际上,undefined值是派生自null值的,因此ECMA-262规定他们的相等性测试要返回true;

alert(null==undefined);//true;

位于null和undefined之间的相等操作符(==)总是返回true,不过要注意的是,这个操作符出于比较的目的会转换其操作数。

而alert(null===undefined); //false

只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。


3.4.4 Boolean类型

该类型只有两个值:true 和 false;

这两个值和数字值不是一回事,true不一定等于1,而false不一定等于0;

注意:Boolean类型的字面值true和false是区分大小写的,也就是说,True和False(以及其他形式的混合大小写形式)都不是Boolean值,只是标识符。

ECMAScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()

var message="Hello World!";
var messageAsBoolean=Boolean(message);

除了以下几个转换为false值以外其他都为true:
1,""(空String);2,null(空对象);3,Number(0和NaN);4,undefined;

这些转换规则对理解流控制语句(如if语句)自动执行相应的Boolean转换非常重要。

var message="Hello World!";
if(message){
  alert("Value is true");
}

3.4.5 Number类型


相关文章

  • JS重难点梳理

    重读JS高程,系统梳理下JS重难点JS重难点梳理之事件

  • JS高程(一)

    复习 JavaScript 高程, 基本上 是 摘抄原文。 在 HTML 中 使用 JavaScript JS 包...

  • 《JS高程》—— ajax

    Ajax (Asynchronous Javascript + XML) 05年由Jesse James Garr...

  • js高程学习

    定义函数的方式:函数声明函数表达式(匿名函数) 函数声明提升函数声明总是在执行代码之前 函数表达式定义:先赋值再用

  • JS高程(二)

    面向对象 的 程序设计 ECMAScript 中 有 两种 属性:数据属性和访问器属性。 数据属性 数...

  • js

    漫漫等车路,先看会js高程,一点也不急

  • 【js高程第5章】 — 引用类型

    一、使用对象字面量定义对象: var person = { "name":"Sherry", "age":"2...

  • 21天(js高程)-第2天

    (续···) 与解析嵌入式JavaScript 代码一样,在解析外部JavaScript文件(包括下载文件)...

  • 21天(js高程)-第3天

    第3章 基本概念 ECMA-262 通过叫做 ECMAScript 的“伪语言”为我们描述了 JavaScript...

  • 21天(js高程)-第4天

    1,注意:用var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中用var定义一个变量...

网友评论

      本文标题:21天(js高程)-第4天

      本文链接:https://www.haomeiwen.com/subject/gkqqlttx.html