`
毒药001
  • 浏览: 5386 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
最近访客 更多访客>>
社区版块
存档分类
最新评论

学习面向对象javascript(一)基本数据类型和数组

 
阅读更多

最近觉得自己以前写的javascript都是些函数式的编程,复用性很差,于是想开始学习Javascript的面向对象编程。在网上找了一本Object-Oriented JavaScript来开始学习。在学习过程中,顺便把学习笔记写到博客中分享出来。


在这一篇文章中,会把javascript中的基本数据类型和数组的东西分享出来。


在文章的最开始,我需要把我自己的环境给大家介绍一下。

首先,我测试代码时所使用的浏览器是firefox。并在上面安装firebug插件。安装以后,可以在firebug的console上面写javascript并可以立即运行。

 

然后,在地址栏中输入about:config ,打开以后找到javascript.options.strict 并把它设为true ,这样,在使用一个没有定义的变量时,Firefox的JavaScript engine就会在控制台上生成一条警告信息。这样,环境就配置好了。


下面,我们回到正题。

 

变量

变量可以定义为字母、数字、下划线的组合,但是不能以数字开头。如:

var thisIsAVariable;  // 合法
var _and_this_too;   // 合法
var mix12three;   // 合法
var 2three4five;  // 非法

多个变量可以定义在一个var后面,如:var v1, v2, v3 = 'hello', v4 = 4, v5;
变量名是区分大小写的,比如:

var case_matters = 'lower';
var CASE_MATTERS = 'upper';

 这是两个不同的变量。

 

数据类型

JavaScript中,一共有5种基本数据类型,他们分别是:

  • Number--包含浮点型和整型数字。
  • String--任意数量的字符组合。
  • Boolean--布尔值,有效值为true和false。
  • Undefined--当你想访问一个没有定义的变量时,你会得到一个特殊的值undefined,同样的,当你访问一个声明了的,但是没有初始化的变量时,JavaScript会将变量初始化为undefined。
  • Null--表示什么也没有,空的。和undefined不同的是,如果一个变量被赋值为null,他仍然是defined,只不过他的值是空的。

除以上5种基本数据类型的数据是object。

使用typeof获得数据类型

如何你想知道一个变量或者值的数据类型,你可以使用typeof操作符来获得一个string类型的 “number”, “string”, “boolean”, “undefined”, “object”, or “function”中的其中一个。比如:

var v1 = 1;
typeof v1;  //得到"number"
typeof typeof v1;   //得到"string" 说明typeof返回的是一个string

数字

整数和小数

最简单的数据就是整数和小数了.

var num1 = 100;
typeof num1;  // "number"
num1;  // 100
var num2 = 0.73;
typeof num2;   // "number"
num2; //0.73

 八进制和十六进制数

var octal = 070;
octal;  //56
var hex = 0xffff;
hex; //65535

 字面值

JavaScript 还可以定义一下字面值,比如:

var literal = 1e1; // e用大小写都可以,表示1*101
leteral;  // 10
literal = 2e+3 //  表示2*103
literal;  // 2000
literal = 2E-3 //  表示2*10-3
literal;  //0.002

 Infinity

JavaScript中有一个特殊的数字叫Infinity,它表示一个很大的,JavaScript无法处理的数字。Infinity的类型仍然是一个数字,如果你用typeof来看它的数据类型,将会返回”number”。在JavaScript中,能够处理的最大数字为1.7976931348623157e+308,最小的数字为5e-324。下面,我们可以做一下实验。

var infinity = Infinity;
infinity;  // Infinity
typeof infinity;  // "number"

 可以看出,Infinity也是属于数字

var infinity = 1e308;
infinity;  // 1e+308
infinity = 1e309;
infinity;  // Infinity
infinity = 6 / 0;
infinity;  // 当除数为0的时候,一样会输出Infinity
infinity = -Infinity;
infinity;  // -Infinity

那么是否可以用两个 Infinity 相减得到 0 呢?下面我们来试一下 :

Infinity - Infinity  // NaN
-Infinity + Infinity  // NaN

我们可以看出,计算后,得到NaN,并不是0。但是其他的一些运算,最后的结果将会得到Infinity。

Infinity - 20;  // Infinity
-Infinity * 3;  // -Infinity
Infinity / 2;  // Infinity
Infinity - 99999999999999999;  // Infinity
Infinity - 1e309;  // NaN

  NaN

NaN到底是什么呢,其实他来自于“Not A Number”。

typeof NaN;  // "number"

由此可以看出,它也是number中的一个特殊值。

var a = NaN;
a;  // NaN

当你在执行一个数学运算的时候,如果运算失败,那么你将获得一个NaN。比如你想用10乘以“f”,这样显然是一个不合法的乘法运算。

10 * "f";  // NaN

同样,如果在你的运算中,含有一个NaN,那么你得到的也将会是NaN。

1 + 2 + NaN;  // NaN

String

String的转换

在String中,“+”用来连接两个字符或字符串。但是其他运算符则可以对String进行转换。

var s1 = "one"; 
var s2 = "two";
var s = s1 + s2; 
s; // "onetwo"

typeof s; // "string"

var s = '1';
s = 3 * s;  // 3

typeof s;  // "number"

var s = '1'; 
s++;  // 1

typeof s;  // "number"

可见,’1’被自动转换为number了。同样的,如果用String做运算时,运算失败,同样会返回一个NaN。

var d = '101 dalmatians'; 
d * 1;  // NaN

 另外,String也可以是Unicode码。

"\u0421\u0442\u043E\u044F\u043D";  // "Стоян"

 逻辑操作符

如果在一个非布尔值上使用逻辑操作符,那么这个值会自动转成boolean .

var b = "one";
!b;  // false

可见,”one”被自动转成了true。
但是下面5个特殊的值将会被转成false。除此之外的值,将会被转换为true。
他们是:空字符串””,null,0,undefined,NaN。

var b = "";
!b;  // true
var b = "0";
!b;  // false
var b = 0;
!b;  // true
var b = null;
!b;  // true
var b = "false";
!b;  // false
var b = "NaN";
!b;  // false
var b = NaN;
!b;  // true

值得一提的是,当遇到和非boolean值进行逻辑运算的时候,这个非boolean值将会作为结果返回。比如:

true || "aaa";  // true
true && "aaa";  // "aaa"

考虑代码的可读性,这样的代码应该尽量避免。

比较

另外还有几种操作符运算以后会返回boolean的。==,===,!=,!==,>,>=,<,<=。
下面针对==,===,!=,!==来解释一下。


==,!=用于判断两个值是否相等或不等,对于不同类型的值比较时,将会被转换为相同类型的,再进行比较。比如:

1 == '1';  // true

===,!==用于判断两个值是否相等或不等,并且还要比较数据的类型是否相同或不同,对于不同类型的值比较时,类型不会被转换,直接返回false。比如:

1 === '1';  // false

另外,比较特殊的是NaN,他不等于任何的值,包括他自己。

NaN == NaN;  // false

 undefined和null

当你使用一个未定义或者定义了但是没有被初始化的值时,你将会得到undefined。javascript在定义变量时,默认给变量初始化为undefined。

foo;  // ReferenceError: foo is not defined
typeof foo;  // "undefined"

不同的是,如果是使用一个定义了,但是没有被初始化的变量。你讲不会得到错误信息。

var foo; 
foo;  // undefined
typeof foo;  // "undefined"

另一方面,对于null。它不会被javascript在后台赋予某个变量,只能是靠我们的代码赋值。

var foo = null; 
foo;  // null
typeof foo;  // "object"

还有, 用==比较时,undefined和null是相等的。

undefined == null;  // true
undefined === null;  // false

虽然null和undefined的区别并不太大,但是在某些时候确实是很重要的。比如在数学运算中,会得到不同的结果。

1+undefined;  // NaN
1+null;  // 1

这是由于null和undefined转换的基本数据类型不同造成的。

数组

对于数组的一些基础知识就不在此多说了。
值得注意的是在删除数组元素时,并不会真的删除掉这个元素,而是把元素值设为undefined。删除之后,数组的长度不变。

var array = [1,2,3]; 
array;  // [1, 2, 3]
delete array[2];   // true
array;  // [1, 2, undefined]
array.length;  // 3

另外,你也可以使用数组来访问string中的当个字符。

var str = "abcd"; 
str[1];  // "b"

 

总结: 在本文中介绍的都是一些比较基础的知识,在下一次的文章中,我会把函数部分的知识分享出来。由于平时工作比较忙,我也是自己抽时间来学习的。有什么不足之处,还望高手们提醒。谢谢。

 

未完,待续。。。

分享到:
评论

相关推荐

    面向对象javascript笔记

    面向对象的JavaScript编程是JavaScript开发中的重要概念,它允许我们以类和对象的...以上就是对"面向对象javascript笔记"所涵盖知识点的详细解析。理解并掌握这些概念对于深入理解和高效地编写JavaScript代码至关重要。

    javascript面向对象编程教程.rar PDF

    - 变量和数据类型:JavaScript支持基本数据类型(如字符串、数字、布尔值)以及引用类型(如对象和数组)。 - 函数:JavaScript中的函数是第一类公民,可以作为变量赋值、作为参数传递或作为返回值。 2. **...

    javascript基础-->中级-->高级-->面向对象

    总结,JavaScript从基础到高级,再到面向对象的深入学习,对于任何参与Web建设的IT人员来说都是至关重要的。理解并熟练运用这些知识点,能够帮助开发者编写出更高效、更健壮的代码,以应对复杂的Web开发需求。

    javascript作业题答案

    变量是存储数据的地方,JavaScript支持基本数据类型(如字符串、数字、布尔值)以及复杂数据类型(如对象和数组)。控制流程语句如条件语句(if...else)、循环(for, while)用于决定代码执行的顺序。函数是一段可...

    包含javascript的基础语法,面向对象的实现和设计模式实现

    - 数据类型:包括基本类型(如字符串、数字、布尔值、null和undefined)和引用类型(如对象和数组)。 - 运算符:包括算术运算符、比较运算符、逻辑运算符等,用于执行计算和比较操作。 - 控制流:如条件语句(if...

    详解JavaScript对象和数组

    它支持面向对象的编程范式,对象和数组是实现这一范式的关键组件。面向对象编程(OOP)提供了封装、聚集、继承和多态的概念,使得代码更加模块化,易于维护和扩展。 封装是指将数据(属性)和行为(方法)封装到...

    JavaScript_Demo,文章《JavaScript笔记》配套代码

    数据类型包括基本类型(如字符串、数字、布尔值、null和undefined)和引用类型(如对象和数组)。在处理数据时,我们常会用到算术、比较和逻辑操作符,以及用于对象和数组操作的赋值、解构赋值等。 在“JS练习代码...

    JavaScript语言精粹完整版

    它支持基本数据类型如数字(Number)、字符串(String)、布尔值(Boolean)、空值(null)和未定义值(undefined),以及复合数据类型如对象(Object)和数组(Array)。 #### 函数 函数是JavaScript中最核心的概念之一,它们...

    韩顺平《轻松搞定网页设计HTML+CSS+JAVASCRIPT》之Javascript学习笔记

    总的来说,JavaScript是网页动态效果的核心,理解和掌握其语法、数据类型、面向对象编程、DOM操作以及事件处理等知识,是成为一名合格Web开发者的基础。通过不断实践和学习,可以利用JavaScript创建出各种复杂的网页...

    javascript初学教程 多本 pdf

    4. **第4章 JavaScript基于对象编程**:JavaScript是一门面向对象的语言,这一章会讲解对象的概念、创建对象的方法(如字面量语法和构造函数)、原型链、继承以及封装和多态等面向对象特性。 5. **第5章 文档对象...

    犀牛JavaScript第5版下

    书中详细解释了基本数据类型(如字符串、数字、布尔值)和复杂数据类型(如对象和数组),以及如何声明和使用变量。此外,作用域规则决定了变量在代码中的可见性,了解函数作用域和块级作用域的区别是避免许多常见...

    JavaScript基础回顾(1)

    它基于ECMAScript规范,包括变量声明(var, let, const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(算术、比较、逻辑、三元运算符等)以及流程控制(条件语句如if...else和...

    JavaScript(TM)Phrasebook:基本编码与命令(CHM电子版)

    变量可以是任何数据类型,包括字符串、数字、布尔值、null、undefined、对象和数组。了解如何声明、赋值和操作这些变量是学习JavaScript的第一步。 在JavaScript中,数据类型的转换是常见的操作,比如将字符串转换...

    JavaScript开发精讲视频教程

    了解基本数据类型(如字符串、数字、布尔值)和引用数据类型(如对象和数组),以及如何使用`typeof`检测数据类型,对于编写健壮的代码至关重要。 4. **函数**:函数是JavaScript中的重要组成部分,它允许我们封装...

    最好的javascript学习教程-JavaScript使用详解

    1. 变量与数据类型:JavaScript支持基本数据类型(如字符串、数字、布尔值)和复杂数据类型(如对象和数组)。理解变量声明(var、let、const)及其作用域至关重要。 2. 运算符:包括算术运算符、比较运算符、逻辑...

    JavaScript 学习和教学课件

    1. **基础语法**:讲解变量、数据类型、运算符、流程控制(条件语句、循环)等基本概念,这是理解任何编程语言的基础。 2. **函数**:介绍函数的定义、调用以及作用域,让学习者学会如何组织代码,实现复用。 3. *...

    javascript中文学习文档

    数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象和数组)。 2. **操作符**:包括算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==)和逻辑操作符(&&、||、!)等。 3. **流程控制**...

Global site tag (gtag.js) - Google Analytics