重新认识javascript(二)

翻译 2013年12月01日 20:47:16


概述:

JavaScript是一个面向对象的动态语言;它有类型和运算符,内置对象和方法。它的语法来源于JavaC语言,也有许多来源于其他语言的结构被应用在JavaScript中。(和其他语言的相比)一个关键性差异是JavaScript中没有类;然而类的功能可以由类原型来完成。另一个主要差异是方法就是对象,使得它具有执行代码和像其他任何对象一样被传递的能力。

现在,我们开始学习所有语言中都有的内容:类型。JavaScript程序操作值,并且这些值都是属于一个类型的。JavaScript的类型包括:

Numbers

Strings

Boolean

Functions

Objects

oh,还有UndefinedNull,这两个有点特殊。还有数组,它是一种特殊类型的对象。还有日期和正则表达式,这两个对象是可以直接使用的。还有严格意义上说,函数也是一种特殊类型的对象,所以类型表应该是下面这样的:

Number

String

Boolean

Object

       Function

       Array

       Date

       RegExt

Null

Undefined

JavaScript也有一些内置的Error类型,尽管如此,如果我们坚持第一个列表,事情会简单许多。

Numbers

根据IEEE754规范,JavaScript中的Numbers是双精度64位的值。这会产生一些有趣的结果。JavaScript中没有Integer类型,如果之前你使用C或者Java,那么在运算的时候你需要小心一些。注意下面这个场景:

0.1 + 0.2 == 0.30000000000000004

实际上,Integer值是32位的整数(在某些浏览器中是这种方式存储的),这对位运算非常重要。想了解更多可以查看The CompleteJavaScript Number Reference

JavaScript支持数字运算的标准,如加减乘除(或者模运算)等等。这里也涉及到一个之前忘记提到的内置对象,叫做Math,它可以处理许多高级数学函数和常量。

Math.sin(3.5);
var d = Math.PI * r * r;

你可以用内置方法parseInt将一个字符串转换为一个整数,它接受一个基数作为第二个可选的参数来完成转换,通常你都需要提供这个参数(这个基数就是通常说的进制数)。

> parseInt("123", 10)
123
> parseInt("010", 10)
10

如果你不提供这个基数,那么在一些较老的浏览器中你会得到意想不到的结果

> parseInt("010")
8

这种情况的发生,是因为这个字符串以0开头,parseInt方法把这个字符串当做是八进制数处理

如果你想把一个二进制数转换成一个整数,只需要修改基数:
> parseInt("11", 2)
3

类似的,你可以用内置方法parseFloat去解析浮点数,它始终用10来作为基数,这一点和它的“堂兄弟”parseInt不同。

你也可以使用一元运算符+将值转为数字

> + "42"
42

如果这个字符串是一个非数字的值,那么将会返回一个特殊值NANNot a Number的简写)

> parseInt("hello", 10)
NaN

NAN是有毒的:如果你把它当做一个输入值做任何数学运算,结果也将会是NAN

> NaN + 5
NaN

你可以用内置函数isNAN来测试一个值是否是NAN

> isNaN(NaN)
true

JavaScript也有特殊字Infinity-Infinity(正无穷大和负无穷大)

> 1 / 0
Infinity
> -1 / 0
-Infinity

可以用内置函数isFinite来判断一个值是不是Infinity-Infinity或者NAN

> isFinite(1/0)
false
> isFinite(-Infinity)
false
> isFinite(NaN)
false

注意:parseIntparseFloat方法解析一个字符串直到碰到的不是一个合法数字格式的字符,然后返回解析到那个位置的数字。然而当使用“+”运算符时如果碰到一个不合法的字符,它只是简单将这个字符串转换成NAN


Strings

JavaScript中的Strings是一些字符组成的序列,准确点说,他们是Unicode编码的字符组成的序列,每一个字符是由一个16位的数字表示。这对于那些不得不处理国际化的问题的人来说无疑是很受欢迎的。

如果你想表示一个单独的字符,只需要使用一个长度为1的字符串就可以了。

使用字符串的length属性,可以得到这个字符串的长度

这是我们学习JavaScript对象的第一把刷子!还记得我提到的strings就是对象吗?它们也有方法

> "hello".charAt(0)
h
> "hello, world".replace("hello", "goodbye")
goodbye, world
> "hello".toUpperCase()
HELLO

其他类型:

JavaScriptnullundefined的区别。null是一个object类型的对象,表示是一个特指的空值,而undefined,是一个undefined类型的对象,表示没有初始化的值,也就是说,还没有分配一个值(给变量)。后续我们会讨论变量,但是在JavaScript中是允许声明一个变量却不给它分配一个值的。如果你这么做了,那么这个变量的类型就是undefined

JavaScript有一个布尔类型,它的取值范围是truefalse(它们两个都是关键字)。任何值依据下面的规则转换成一个布尔型的值。

1.False0,空串(””),NANnullundefined都将转换为false

2.其他的都转换为true

你可以使用Boolean方法来显示的完成这个转换:

> Boolean("")
false
> Boolean(234)
true
然而,很少有必要这么做,因为当需要一个布尔值的时候,JavaScript默认会执行这个转换,就像在if语句里面(见下面例子)。因为这个原因,我们有时就简单的说真值和假值,表示值被转换成布尔类型的值时分别会变转换为truefalse。或者,这些值会被分别叫做truthyfalsy。(它们分别是truefalse的字面量)

Boolean值支持Boolean运算,像&&(逻辑与)||(逻辑或)和!(逻辑非),看下面例子:

&&和||运算符会使逻辑短路,意味着会根据第一个操作数的结果来决定是否执行第二个操作数。这对在使用一个对象的属性之前检测对象是否是null非常有效。

var name = o && o.getName();

Or运算符可用来设置默认值:

var name =otherName || "default";

JavaScript有个三目运算符,用来计算条件表达式:

var allowed = (age > 18) ? "yes" : "no";


重新认识java(零) --- 不积跬步无以至千里

好高骛远,眼高手低,是你前进路上最大的绊脚石 — 致走在学习道路上的人 p.s. 本篇文章没有技术含量。...
  • qq_31655965
  • qq_31655965
  • 2016年11月26日 22:09
  • 2688

重新认识JAVASCRIPT

内容来源于从网上看到的一些文章。 主要介绍一些 javascript 比较混乱的语法和一些不太常用的用法。 基本语法 Js 是弱类型动态语言,所以任意变量名都可随时改变数据类型,在js 里面一切...
  • xwdev
  • xwdev
  • 2011年08月24日 17:46
  • 333

重新认识JavaScript

JavaScrpit在我眼中一直是web前端脚本语言,而这段时间的一些工作,让我对JavaScript有了一个全新的认识。    公司准备启动的一个手游项目,服务器端准备使用网易的开源框架pom...
  • u013276429
  • u013276429
  • 2014年01月16日 15:01
  • 336

重新认识java(三) ---- 面向对象之继承!

学习一个新知识的第一步,就是要知道它是什么,然后要知道为什么要用它,最后要知道如何使用它。这篇文章,我们重新认识一下java中的继承。...
  • qq_31655965
  • qq_31655965
  • 2016年11月29日 22:16
  • 2420

面向对象的JavaScript(2): 对象就是二元组

什么是对象?这里有很多关于对象的定义:对象(object)是一件事、一个实体、一个名词,是可以获得的东西,是可以想象的能够有自己标识的任何东西。对象是类的实例化。对象是一些相关的变量和方法的软件集合。...
  • FinderCheng
  • FinderCheng
  • 2009年04月21日 20:42
  • 1312

1.SpringBoot系列-初识SpringBoot

1.创建SpringBoot工程1.1通过IDEA构建SpringBoot工程新建工程,选择如图选项,下一步 选择所需要的组件,下一步,结束即可。 1.2通过网站构建SpringBoot工程S...
  • qq_31776219
  • qq_31776219
  • 2017年06月03日 23:03
  • 232

重新认识javascript(一)

介绍: 为什么重新介绍javascript呢?yinw 原文:A re-introduction to JavaScript
  • yeliang0616
  • yeliang0616
  • 2013年12月01日 20:15
  • 441

重新认识javascript(五)

对象 自定义对象 注意:想要了解更多JavaScript中面向对象编程的知识,参考Introduction to Object Oriented JavaScript. 在传统的面向对象编程中,对象...
  • yeliang0616
  • yeliang0616
  • 2013年12月01日 22:00
  • 323

这一段时间的收获与感想,重新认识自己

好吧,又过了1个多星期,这一个多星期呢;真的又懂了很多,但我还是有很多很多的东西不懂;这种开心也真的是很开心;这一个多星期,我把JAVA的面向对象的一些特征明白的,只是多态还是有点疑问。生活就是疑问有...
  • u013078669
  • u013078669
  • 2014年11月29日 19:41
  • 672

EMC与地之重新认识地

记得在Mark的培训中,他手上拿了一个无线鼠标,然后问了一个很有意思的问题:“这个无线鼠标的地在哪里?同样,我们的手机没有和任何大地有接触,那么这个地又在哪里呢?”这个问题确实很有意思,也确实让人很难...
  • edadoc2013
  • edadoc2013
  • 2016年11月01日 16:52
  • 249
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重新认识javascript(二)
举报原因:
原因补充:

(最多只允许输入30个字)