由于这段时间在学习ajax,所以想把javascript和C#系统的比较下,写这篇文章主要的目的是想要系统了解javascript和C#当中的一些语法区别,还有两种语言特有的属性,只以javascript为主,以后会不段更新,只供参考,本人水平有限,若有错误,还忘各位指出。
javascript是浏览器按顺序分析的,分析后,在html当中就可以使用其方法,对象,变量等,C#需要被编译成中间代码,也就是dll文件,然后由CLR当中的JIT及时编译成机器语言并保存在缓存中,注意前者只需要解析,后者需要两次编译
本篇文章目录:
一.声明变量
二.函数或方法的声明及调用
三.javascript对象及如何添加属性和函数
一.声明变量。
javascript:
javascript当中的变量可以在声明的时候加上var,也可以不加,但是否加var会在过程函数中区别出来,也就是没加var声明的变量会被系统自动认为是全局变量,如在一个函数当中:
function testvar(){
var a=1;//加了var 就说明这个变量属于局部变量,只在这个函数内有效
b="mystr";//未加var 就说明系统已经把它当成全局变量来处理了
}
testvar();
c=a;//会出现错误 错误内容是a是undefine的,也就是未定义的
c=b;//运行成功
alert(c);
总结:
1.在一个过程级中(即位于function的定义范围内,无论是函数,还是类)的任何地方,包括在一个区块里(for,while,if……),定义变量时,使用var定义,则此变量只在这个过程级内起作用,反之为全局变量。
2.在过程级外定义变量时,无论是否忽略var,都将定义一个全局变量。
3.变量声明后,如果不对变量赋初值,浏览器在解析的时候,会自动是undefine的,所以这个时候,只允许赋值,而不允许被使用,不然,浏览器会出现未定义的错误
C#:
这里不过多的描述,估计熟悉面向对象语言这个应该很清晰了 变量定义:函数类型 函数名 如 int a; string b;MyClass cls;等,注意,当没赋初值的时候,都不可以使用,这个和js当中的第3种情况类似
二.函数或方法的声明及调用
注意:function的声明有两种函数:普通函数和构造函数
总结:1.javascript函数是自由浮动的实体,自身就可以作为正常对象来使用,而C#当中的函数必须声明在一个类当中,不能与类脱离,函数又分为静态函数和实例函数,C#函数当中不管是哪个,前提都是依赖于所属的类的
javascript例子:
function functionName([argname1 [, ...[, argnameN]]])
{
body
}
functionName = new Function( [argname1, [... argnameN,]] body );
C#:
2.javascript当中有个直接变量的概念,其实这是基于函数就是Function对象来的,如 var news=Getnews;因为Getnews就是Function对象,所以可以将它当成普通对象赋值,javascript是一种解析的语言,当对代码解析的时候,news自动也就了Function对象,而且这个对象就是Getnews,所以调用news()就相当于调用Getnews();
这个让我想起和C#当中的委托有很大相似之处,当然事件就是一个特殊的委托,这里以一个委托作为一个例子,研究下
3.javascript当中可以不命名来声明一个函数,但在C#当中就不可以
话外音:Function对象特有方法Call
//声明一个cat构造函数,也可以说成声明一个cat类,我感觉两者都可以
function cat(name,weight)
{
this.name=name;
this.weight=weight;
this.bark=function (){
alert('喵,我是'+this.name);
};//有两个属性,一个方法
}
//声明一个wood类
function wood(name,weight)
{
this.name=name;
this.weight=weight;//它现在还不能叫
}
//声明一个cat对象和wood对象
mycat=new cat("小花",10);
mywood=new wood("大树一号",100);
3.javascript对象及如何添加属性和函数
(1)前面说了javascript不管是类还是函数,方法,都是用function 来声明的,这里和C#有了区别 C#类用class声明,函数依赖于类,构造函数也必须在类中。
(2)声明对象中的属性,在javascript当中有两种建法,一种是普通javascript建立参数的方法,一种是利用JSON来完成建立对象的方法,后者会复杂的多,所以经常用前者
普通javascript声明对象并对其属性赋值特征如下:
JSON建立对象,现在先了解下什么是JSON,它的用法是什么:
========================================================================================
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true
、false
、 null
、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
object | {} { members } |
members | pair pair , members |
pair | string : value |
array | [] [ elements ] |
elements | value value , elements |
value |
number object array true false null |
string | "" " chars " |
chars | char char chars |
char |
except-"-or-/-or- control-character /" // // /b /f /n /r /t /u four-hex-digits |
number | int int frac int exp int frac exp |
int |
digit1-9 digits - digit - digit1-9 digits |
frac | . digits |
|
e digits |
digits | digit digit digits |
e | e e+ e- E E+ E- |
4.关于javascript何时可以忽略分号(;)的问题
在C#当中每个句子都需要有一个分号来表示一个句子的结束,除了if,for,foreach,函数声明等流程控制语句外。
而在javascript当中每个句子的最后分号是可以省略的,这是由于特殊的javascript解析器,解析器是一句,一行按照一句进行解析的,而{} 这个符号则表示这是一个过程段,也就是这整个过程做为一句来处理,但内部仍然分成许多句。
一般情况下,如果你换行就不需要。
a = 1
b = 1
-------------
如果不换行则需要。
a = 1 ; b = 1
-------------
另外还有一些情况下必须使用,不过建议您养成良好的编程习惯,应该在每一段代码后面加上分号。
如果多个语句用回车进行了分行,那么语句之间的分号“;”不是必需的;
如果多个语句写在一行上,那么语句之间的分号“;”才是必需的。
====================================================================
一条语句由一个或多个表达式、关键字或者运算符(符号)组成。典型地,一条语句写一行,尽管一条语句可以超过两行或更多行。两条或更多条语句也可以写在同一行上,语句之间用分号“;”隔开。通常,每一新行开始一条新语句。不过显式地终止语句是一个好方法。这是用分号 (;) 来实现的,分号是 JScript 语句的终止字符。