ECMAScript 基础知识_javascript技巧

May 16, 2016 pm 07:11 PM
ecmascript 基本知識

JavaScript的核心之一ECMAScript的语言特性和Java、C、Perl都有许多相似之处,其中不少特性都是从这些语言借鉴而来,同时它们之间也存在许多差异。下面列举一些ECMAScript的基本特性。

   --和Java一样,ECMAScript区分大小写,注释的格式相同,通过{}确定代码块,原始数据类型存储在堆栈,对象的引用存储在堆中
   --ECMAScript是一种松散的语言,ECMAScript通过var操作符声明变量,并且不限类型,例如var n = 25,那么n就是数字类型,var n = "string" ,那么n就是String类型
   --在每一行代码后,可以不写分号,ECMAScript自动认为该行的末尾为该行代码的最后;ECMAScript中的变量可以不用初始化,在幕后系统将自动完成初始化操作
   --同一变量可以赋予不同类型的数据;变量的第一个字符只能是字母、下划线或$ ,其他的字符可以是下划线、$、或任意的字母、数字、字符
   --和其他语言一样,变量最好遵循驼峰书写法,或Pascal表示法、或匈牙利表示法
   --和大多数语言不同的是, ECMAScript 变量在使用之前可以不必声明,系统会自动将该变量声明为全局变量,例如var m = " Good " ; n = m + " Morning " ; alert(n)输出结构是 " Good Morning " 
   --在大多数语言里,String是对象,在ECMAScript中却是原始数据类型

   原始数据类型 

   ECMAScript原始数据类型有五种:Undefined、Null、Boolean、Number、String。

   typeof—判断变量和值的数据类型,通常有undefined、boolean、number、string、object五种类型。
   Undefined—当变量被声明但没有初始化,或函数没有明确返回一个值的时候,该变量或函数即为 Undefined 类型。
   Null—undefined是null的一种派生,当代表一个对象的值不存在时,该对象返回null。
   Boolean—包含两个值,true and false , false不等于0,但0可以转换为false 。
   Number—可以定义32位整型数据或64位浮点型数据。定义数字类型变量时,在数字前加0即为八进制,加0x为十六进制,它们计算后返回的结果统一为十进制。通过var f = 1.0可以定义一个浮点类型变量,有意思的是,当f被用于计算之前,它实际是以 String类型存储的。当浮点类型数据很大或很小时(可以前后移动六位),将使用E表示法来表示浮点数据,最大可以存储17位数据。另外,isFinite()方法可以判断一个数值是否有限,isNaN()方法可以判断一个数据是非数字类型。
   String—String在ECMAScript中是原始数据类型,并且是唯一没有空间大小限制的数据类型。和Java不同的是,var s = " javascript " 和var s = 'javascript'均是合法的表示方法。

   数据转换 

   在不同数据类型之间转换是任何一门编程语言的一个重要特性,ECMAScript提供了一系列简单的方法来实现数据的转换,大多数数据类型都提供了简单的转换方法,对于复杂的转换则有一些全局方法来完成,不管是哪一种方法,ECMAScript中数据转换都非常简单。 

   Boolean、number和string数据类型是原始数据类型,但它们同时是伪对象(在ECMAScript中伪对象到底该怎么解释,运行机制如何还不清楚?有人知道请给予解答),拥有自己的属性和方法,可以通过toString()方法来实现string类型的转换。ECMAScript定义所有的对象,不管是伪对象还是真实的对象,都可以实现toString()方法,string被列为伪对象的行列,自然也拥有toString()方法。将数字类型数据转换为string的时候,可以在 toString() 方法中加入2、8、16参数,来实现不同进制的数据输出,例如var n = 10; alert(n.toString(2))输出为1010,alert(n.toString(8))输出为12,n.toString()和n.toString(10)相同。 

   ECMAScript提供了两种方法来实现string类型转化为数字类型的方法:parseInt()和parseFloat()。其他类型转换将会返回 NaN(Not a Number)。

   Type Casting

   ECMAScript数据类型的转换通常可以通过三个方法来实现:Boolean(value)、Number(value)和String(value),这样通常会产生一些非预期的结果。

   Boolean



var b1 = Boolean( "" );  // false–empty string 
var b2 = Boolean( " hi " );  // true–non-empty string 
var b3 = Boolean( 100 );  // true–non-zero number 
var b4 = Boolean( null );  // false-null 
var b5 = Boolean( 0 );  // false-zero 
var b6 = Boolean( new Object());  // true–object 

   Number 



Number( false )  0 
Number( true )   1 
Number(undefined) NaN
Number( null )  0 
Number( " 5.5 " )  5.5 
Number( " 56 " )  56 
Number( " 5.6.7 " ) NaN
Number( new Object()) NaN
Number( 100 )  100 

   String

   String()能实现所有类型数据的直接转换,和使用toString()不同的是,String()能够将null或undefined数据转换为string。

   引用类型

   ECMAScript 实际上并没有传统意义上的类,只是通过定义对象来等同于其他语言中的类,这一点我还比较含糊,以后可能会明白,在文中还是以“类”来说明。



var  ob  =   new  Object(); 

   以上定义了一个Object对象的实例,这种语法和Java比较类似。当有参数的时候需要括号来引用,当不存在参数时,括号可以去掉。由于ECMAScript语言比较松散,不管是前面所属的基础语法,还是后面将提到的语法知识,我们都应该尽量按照一定的书写规范来约定自己的代码格式,而不应充分发挥语言松散的特点。

   Object类

   Object类和Java里的java.lang.Object类比较相似,它是ECMAScript中其他所有类的基类,它具有如下属性:

   constructor—建立对象的函数的一个引用,对于Object类而言,该引用指向本地Object()方法。
   prototype—对象里prototype对象的一个引用值。

   Object 类拥有的方法:

   hasOwnProperty(property)—判断property属性是否存在于对象中,property数据类型为string
   isPrototypeOf(object)— 判断一个对象是否是另一对象的 prototype
   propertyIsEnumerable(property)— 判断所给出的属性能否使用 for 语句列举出来
   toString()—返回对象的原始类型string
   valueOf()—返回对象合适的原始值,对于多数类而言,返回的值和toString()相同
   Object类的每一个属性和方法都被其他的类所重写

   Boolean类

   定义方法var ob = new Boolean(true); ob是Boolean原始数据类型的一个引用。在使用Boolean对象过程中,需要注意,所有的对象会自动转变为true,因此var ob1 = new Boolean(false);  var ob2 = ob1 && true; 最后ob2的值是true,非false。一般情况下,使用Boolean原始数据类型可以避免这种情况。

   Number类

   定义方法var o = new Number(15);
   获得原始数据的值var n = o.valueOf();

   Number类有一些为数字类型的值特别设计的方法:



alert(o.toFixed( 2 ));   // 输出15.00 
alert(o.toExponential( 1 ));   // 输出1.5e+1 

   在无法确定使用 toFixed 还是 toExponential 的时候,可以使用 toPrecision 方法来获得取值:



alert(o.toPrecision( 1 ));   // 输出 2e+1 
alert(o.toPrecision( 2 ));   // 输出 15 
alert(o.toPrecision( 3 ));   // 输出 15.0 

   String类

   String类是一种复杂引用类型,这里仅列出一些常见的方法,其中不少都是模仿java.lang.String:



var  s  =   new  String( " Good Morning " );
alert(s.valueOf()  ==  s.toString());   // 输出true 
alert(s.length);   // 输出12 
alert(s.charAt( 1 ));   // 输出o 
var  sr  =  s.concat( "  ! " ); alert(sr);   // 输出Good morning ! 
alert(s.indexOf( " o " );   // 输出1 
alert(s.lastIndexOf( " o " );   // 输出6 
alert(s.localeCompare(Good morning));   // 输出0 
alert(s.localeCompare(Apple));   // 输出1 
alert(s.localeCompare(House));   // 输出-1 
alert(s.slice( 2 ));   //  输出od morning 
alert(s.substring( 2 ));   //  输出od morning 
alert(s.slice( 2 ,  - 5 ));   //  输出od mo 
alert(s.substring( 2 ,  - 5 ));   // 输出Go 
alert(s.toUpperCase());   // 输出GOOD MORNING 
alert(s.toLowerCase());   // 输出good morning 

   另外,所有String类的方法同样可以用于String原始数据类型,因为它是伪对象。

   instanceof 

   instanceof操作符和typeof作用类似,不同的是,instanceof需要明确指定对象是否属于某种特定类型。例如



var  s  =   new  String( " Good morning ! " );
alert(s  instanceof  String); 

   操作符和语句 

   ECMAScript 中大多数操作符、语句和 Java 都比较类似,但也有一些其特有的,如 label 语句, with 语句, for-in 语句等等。

   Functions

   Functions是ECMAScript的核心,在任何时候任何地方都可以运行的一组代码语句。



 function  functionName(arg0, arg1, …… , argN)   {
 statements


   当function没有返回值或return语句后没有值的时候,该function实际上会被系统定义为undefined,当function返回值的时候,function可以不必明确指定为某种数据类型。

   关于重载

   重载是面向对象语言的基本特性之一,但 ECMAScript 的 functions 并不能重载,在同一范围里可以定义两个完全相同的函数,在调用函数的时候,最后的一个函数发挥作用。这种特性比较麻烦,但可以通过 arguments 对象来实现和重载类似的功能。



 function  func()   {
  if (arguments.length  ==   1 )   {
   alert(arguments[ 0 ]  +   5 );
 }   else   if  (arguments.length  ==   2 )   {
     alert(arguments[ 0 ]  +  arguments[ 1 ]);
   } 


func( 5 );   // 输出10 
func( 10 ,  15 );   // 输出25 

   前面提到过,在同一范围里可以定义两个完全相同的function,在调用function的时候,最后的一个function发挥作用。



 function  func(i)   {
 alert(i  +   10 );

 function  func(i)   {
 alert(i  +   20 );

func( 5 );   // 输出25 

   可以看出,是调用了最后的一个function使得数据结果为25,如果使用Function类来定义以上两个函数,那为什么会使用最后的一个function可能会更明确一些。 



var  func  =   new  Function(“i”, “alert(i  +   10 )”);
var  func  =   new  Function(“i”, “alert(i  +   20 )”);
func( 5 ); 

   func指向了另外一个引用,从而值发生了改变,func是作为function对象的引用而存在的,并且允许两个变量指向同一个 function。

   和Function类相关的属性、方法有许多,例如length、toString()、valueOf()等等。其中toString()在调试程序中使用较多。 

原文:http://www.blogjava.net/flyingis/archive/2006/06/13/52484.html 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

es2017 は es6 ですか、それとも es8 ですか? es2017 は es6 ですか、それとも es8 ですか? Oct 27, 2022 pm 05:37 PM

es2017はes8です。 es の正式名称は「ECMAScript」で、ECMA-262 標準に従って実装されたユニバーサル スクリプト言語です。2017 年 6 月に正式にリリースされたバージョンは、正式には ECMAScript2017 (ES2017) と呼ばれます。ECMAScript の 8 番目のバージョンであるため、 es8 と呼ばれます。

ES6~ES12の全機能を1記事でサクッと詳しく解説! ES6~ES12の全機能を1記事でサクッと詳しく解説! Jul 22, 2022 am 11:06 AM

この記事では、ECMAScript の機能を整理して共有します。ES6 ~ ES12 のすべての機能を 1 時間もあればすぐに理解できます。一定の参考値があるので、困っている友達が参考になれば幸いです。

ゼロから学ぶ: Go 言語の基礎をマスターする ゼロから学ぶ: Go 言語の基礎をマスターする Feb 01, 2024 am 08:45 AM

ゼロから始める: Go 言語学習の基礎の紹介 Go 言語は、Golang とも呼ばれ、Google によって開発されたオープンソース プログラミング言語です。 2009 年にリリースされ、特に Web 開発、分散システム、クラウド コンピューティングなどの分野ですぐに人気のある言語になりました。 Go 言語は、そのシンプルさ、効率性、強力な同時実行性で有名です。基本構文 1. 変数と定数 Go 言語では、変数と定数は型指定されます。変数はデータを保存できますが、定数は変更できません。変数の宣言形式は次のとおりです。 v

MySQL を学ぶには必読の書です。 SQL文の基礎知識を詳しく解説 MySQL を学ぶには必読の書です。 SQL文の基礎知識を詳しく解説 Jun 15, 2023 pm 09:00 PM

MySQL は、Web アプリケーション開発とデータ ストレージで広く使用されているオープン ソースのリレーショナル データベース管理システムです。 MySQL の SQL 言語を学ぶことは、データ管理者と開発者にとって非常に必要です。 SQL 言語は MySQL の中核部分であるため、MySQL を学習する前に SQL 言語を完全に理解する必要があります。この記事では SQL ステートメントの基礎知識を詳しく説明し、SQL ステートメントを段階的に理解できるようにすることを目的としています。ステップ。 SQL は Structured Query Language の略称で、リレーショナル データで使用されます。

Canvas を学習するにはどのような基本概念を理解する必要がありますか? Canvas を学習するにはどのような基本概念を理解する必要がありますか? Jan 17, 2024 am 10:37 AM

Canvasを学ぶために必要な基礎知識は何ですか?最新の Web テクノロジーの発展に伴い、HTML5 の <canvas> タグを使用して描画することが一般的な方法になりました。 Canvas はグラフィック、アニメーション、その他の画像を描画するために使用される HTML 要素であり、JavaScript を使用して操作および制御できます。 Canvas を学び、その基礎知識をマスターしたい場合は、以下で詳しく紹介します。 HTML と CSS の基本: Canvas を学ぶ前に

Go プログラミングの初心者ガイド: 基礎知識と実践的な応用 Go プログラミングの初心者ガイド: 基礎知識と実践的な応用 Jan 23, 2024 am 09:31 AM

Go 言語プログラミングのクイック スタート: 基本的な知識と実践ガイド Go 言語は、新興プログラミング言語として、そのシンプルさ、効率性、同時実行性により開発者に好まれています。初心者でもプログラミング経験のある開発者でも、この記事では Go プログラミングをすぐに始められ、いくつかの実践的なガイドラインと具体的なコード例を提供します。 1. Go 言語環境をインストールする Go 言語でプログラミングを開始するには、まず Go 言語環境をコンピュータにインストールする必要があります。 Go公式サイト(https://golang)からダウンロードできます。

Yii フレームワークの基本的な知識 Yii フレームワークの基本的な知識 Jun 21, 2023 pm 07:07 PM

Yii は人気のあるオブジェクト指向 PHP フレームワークで、正式名称は「YesItIs」で、「はい、これはこんな感じです」という意味です。効率的、高速、安全、そして使いやすいように設計されているため、大規模な Web アプリケーションの開発で広く使用されています。この記事では、初心者がこのフレームワークをよりよく理解できるように、Yii フレームワークの基本的な知識を紹介します。 MVC アーキテクチャ Yii フレームワークは、MVC (Model-View-Controller) に基づいた設計パターンを採用しています。

Go 言語プログラミングの基礎を徹底的に学ぶ Go 言語プログラミングの基礎を徹底的に学ぶ Mar 05, 2024 am 08:15 AM

「Go 言語プログラミングの基礎に関する詳細なディスカッション: 特定のコード例の分析」 Go 言語は、高速で効率的なプログラミング言語として、プログラマーや開発者の間でますます支持されています。 Go 言語を学習しマスターするプロセスでは、その基本を深く理解することが重要です。この記事では、変数、データ型、プロセス制御、関数などについて詳しく説明し、特定のコード例と組み合わせて、読者が Go 言語の基本知識をよりよく理解し習得できるようにします。変数とデータ型 Go 言語では、変数の宣言と初期化は非常に複雑です。

See all articles