资讯专栏INFORMATION COLUMN

javascript高程第三章部分笔记

lentoo / 1011人阅读

摘要:标识符按以下规则组合第一个字符必须是一个字母,下划线或一个美元符号。包含值的变量和尚未定义的变量是不一样的,例子报错然而,对未初始化的变量执行操作符会返回值,对未声明的变量执行操作符统一也会返回值。

1. 语法 1.1 区分大小写

变量、函数名和操作费都区分大小写。

1.2 标识符

标识符指变量、函数、属性的名字,或者函数的参数。标识符按以下规则组合:

第一个字符必须是一个字母,下划线(_)或一个美元符号($)。
其他字符可以是字母、下划线、美元符号或者数字。

标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词首字母大写,例如:

firstSecond
myCar
doSomethingImportant
1.3 注释

使用c风格的注释

//单行注释

/*
多
行
注
释
*/
1.4 严格模式

在顶部添加如下代码进入严格模式:
"use strict";
(此处不深究)

1.5 语句

ECMAScript中的语句以一个分号结尾,如果省略了分号,那么由解析器确定语句的结尾。
虽然语句结尾的分号不是必须的,但我们建议任何时候都不要省略他
加上分号可以避免很多错误(例如不完整的输入),开发人员也可以放心地通过删除多余的空格来压缩ECMAScript代码。加上分号也会在某些情况下增进代码的性能,减轻解析器的负担。

在条件控制语句中,即使代码块里只有一条语句也使用代码块。

if (test)           //有效但容易出错,不要使用
    alert(test);
    
if (test){                  //推荐使用
    alert(test);
}
2. 关键字和保留字

ECMA-262描述了一组具有特定用途的关键字,以及一组不能用作标识符的保留字

3. 变量

ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量静静是一个用于保存值的占位符而已。使用var操作符定义变量(var是一个关键字),后跟变量名(即标识符)。
省略var操作符,可以在函数中创建全局变量:

function test(){
    message = "hi";      //message为全局变量
}
test();
alert(message);

可以使用一条语句定义多个变量

var message = "hi",
    found = false,
    age = 29;
    

由于ECMAScript是松散类型的,因而使用不同类型初始化变量的操作可以放在一条语句中完成。

4. 数据类型

ECMAScript中有5中简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number,String
还有一种复杂数据类型——Object,Object本质上是有一组无序的名值对组成的。
ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6中数据类型之一。
ECMAScript具有动态性,因此没有再定义其他数据类型的必要了。

4.1 typeof操作符

对一个值使用typeof操作符可能返回下列某个字符串

"underfined"——如果这个值未定义
"boolean"——如果这个值是布尔值
"string"——如果这个值是字符串
"number"——如果这个值是数值
"object"——如果这个值是对象
"function"——如果这个值是函数

以下是几个例子:

var message = "some string";
alert(typeof message);  //string
alert(typeof(message)); //string
alert(typeof 95);   //number

这几个例子说明,typeof操作符的操作数可以是变量(message),也可以是数值字面量。注意,typeof是一个操作符而不是函数,因此例子中的圆括号尽管可以使用,但是不是必须的。
有些时候,typeof操作符会返回一些令人迷惑但是技术上却正确的值。比如,调用typeof null会返回"object"。因为特殊值"null"被认为是一个空的对象引用。

从技术上讲,函数在ECMAScript中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象是有必要的。
4.2 Undefined类型

Undefined类型只有一个值,即特殊的Undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined,如:

var message;
alert(message == undefined);  //true
字面值undefined的主要目的是比较。

包含undefined值的变量和尚未定义的变量是不一样的,例子:

var message;
alert(message);//underfined
alert(asnfoiasnfi);//报错

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

显示地初始化变量是明智的选择,这样,当typeof操作符返回"undefined"值时,我们就知道该变量是没有被声明,而不是没有初始化。
4.3 Null类型

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑关系看,null值表示一个空对象指针,所以typeof操作符检测null值会返回object

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。
这样一来,只要检测null值就可以知道相应的变量是否已经保存了一个对象的引用。
只要意在保存对象的变量还没有真正保存对象,就应该明确地让变量保存null值.
if (car != null){
//对car对象执行某些操作
}

undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。

alert(null == undefined);   //true
4.4 Boolean类型

Boolean类型只有两个字面值:truefalse。这两个值和数字值不是一回事,true不一定等于1,false不一定等于0。
ECMAScript中所有类型的值都有与这两个Boolean值等价的值。调用转型函数Boolean(),如:

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

下表给出各种数据类型以及其对应的转换规则。

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 " "(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined undefined

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

var message = "Hello world!:;
if (message){  //自动转换
    alert("Value is true");
}
4.5 Number类型

Number类型使用IEEE754格式来表示整数和浮点数值。
八进制字面值的第一位必须是0,十六进制字面值的前两位必须是0x,在进行算术计算时,所有八进制和十六进制表示的数值最终都将被转换成十六进制。

var intNum = 55;  //整数
var octalNum1 = 070;   //八进制的56
var octalNum2 = 079;   //无效的八进制,解析为79
var hexNum1 = 0xA;  //十六进制的10
var hexNum2 = 0x1f; //十六进制的31

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

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

相关文章

  • JS高程读书笔记--三章基本概念

    摘要:高程读书笔记第三章语法中的一切变量函数名和操作符都区分大小写。建议无论在任何情况下都指定基数函数与函数类似。返回对象的字符串数值或布尔值表示。 JS高程读书笔记--第三章 语法 ECMAScript中的一切(变量、函数名和操作符)都区分大小写。 不能把关键字、保留字、true、false和null用做标识符。 严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式...

    keithyau 评论0 收藏0
  • 读“js高程笔记

    showImg(http://img3.douban.com/lpic/s8958650.jpg); 0x00 javascript组成 ECMAScript(-265)核心语言部分 DOM文档对象模型(DOM1、2、3) BOM浏览器对象模型(提供与浏览器交互的接口和方法) 0x01 async 异步加载 执行顺序不定 charset defer 延迟加载,立即下载脚本但不执行 src ...

    CollinPeng 评论0 收藏0
  • javascript高程3 学习笔记(二)

    摘要:的理解函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型比如函数的形参有两个,但是调用函数传入的参数可以写一个,三个或不写参数对应等,解析器都可以正常解析,这是因为中参数在内部是以一个数组形式来表示,故而不需要关系传入参数 ECMAScript function的理解 ECMAScript 函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型...

    JerryWangSAP 评论0 收藏0
  • javascript高程3 学习笔记(一)

    摘要:元素,当浏览器不支持脚本数据结构有如下中基本数据结构操作符,用来检测给定变量的数据类型结果都是,声明没初始化,使用生命变量但未对其进行初始化的,默认没有进行声明,传递给函数会导致一个错误,对于未声明变量这么操作没什么意义比如,也是返回。 javascript简史 微软IE和网景在浏览器上的竞争 ECMAScript,由ECMA-262定义,提供核心语言功能 `ECMA 欧洲计算机制...

    you_De 评论0 收藏0
  • javascript高程3 学习笔记(三)

    摘要:与执行环境相关的变量对象中有执行环境定义的所有变量和函数作用域链代码在一个环境中执行,便会创建变量对象的一个作用域链。 执行环境 执行环境是什么? javascript的解释器每次开始执行一个函数时,都会为每个函数创建一个执行环境(execution context)。 执行环境定义了变量或者函数有权访问的其他数据,决定了他们各自的行为。 与执行环境相关的变量对象(...

    avwu 评论0 收藏0

发表评论

0条评论

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