分享

AAuto,PHP,Javascript语法比较

 quasiceo 2014-04-23

项目 AAuto PHP Javascript
简介

AAuto主要用于桌面软件快速开发语言,兼容动态类型、静态类型开发的混合型编程语言,AAuto可以生成数百KB的独立EXE,不依赖任何外部运行库.

 

 

PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言,常常搭配 Apache (web 服务器) 一起使用。PHP 语法非常类似于 Perl 和 C。

在Windows上可以使用 WAMPServer 等自动安装工具方便的创建运行环境,推荐开发工具 Zend Studio,phpDesinger7,Edit Plus,Notepad++

JavaScript 是因特网上最流行的客户端脚本语言,并且可在所有主要的浏览器中运行,比方说 Internet Explorer、 Mozilla、Firefox、Netscape、和 Opera。JavaScript 被用来改进设计、验证表单、检测浏览器、创建cookies等

 

 

实现方式

AAuto源码文件存储为 *.aau 格式的文本文件,也可以编译成二进制的 *.aau 文件,aau文件可以使用AAuto编写的EXE加载运行,也可以在快手中生成独立的EXE文件

 

 

PHP 的脚本块以 <?php 开始,以 ?> 结束。您可以把 PHP 的脚本块放置在文档中的任何位置。 当然,在支持简写的服务器上,您可以使用 <? 和 ?> 来开始和结束脚本块。例:<?php /PHP Document…… ?> HTML 的 <script> 标签用于把 JavaScript 插入 HTML 页面当中。 例:<script language="javascript">// JavaScript Document …… </script>
注释 单行的注释以 // 开始 多行注释以 /* 开头,以 */ 结尾。 在AAuto中多行注释的首尾星号数目可以有多个,并且首尾数目必须匹配,使用此特性,只要星号数目不一样,就可以在注释中包含其他多行注释 在AAuto中注释语句也可以用于赋值语句作为字符串使用.例如: var str = /*使用多行注释作为字符串换行总是被解释为'\r\n',也就是回车换行*/

单行的注释以 // 开始 多行注释以 /* 开头,以 */ 结尾。

 

 

与PHP相同

 

 

 

变量

变量可以不声明直接使用, 使用赋值语句初始化变量。变量默认为当前名字空间成员变量。

 

变量分为三种:

1、全局变量

2、当前名字空间变量(也可以算是全局变量)

3、局部变是

 

AAuto的变量名也可以使用$符号,

但$是变量名的一部份

 

 

局部变量申明用var语句定义
例:var sqlstr;

若不使用var,
则此变量申明为当前名字空间成员变量。

例:color='#111';

 

使用self可表示当前名字空间,上面的语句等价于self.color = '#111'

 

在前面加上两点,则变量声明为全局变量,

例 ..color = "#111"

 

 

 

变量可以不声明直接使用,使用赋值语句初始化变量。函数内部变量默认为局部变量。

 

变量分为三种:

1、全局变量

2、局部变是

 

PHP 中的所有变量必须以 $ 符号开始。 $号是变量的修饰前缀,但不是变量名称的一部份

 

 

在PHP中函数内部变量默认为局部变量(这与AAuto,Javascript正好相反),使用 global 语句引入或声明全局变量.

 

例:

 

//用global关键字定义全局变量

global $g; 


 

变量可以不声明直接使用,使用赋值语句初始化变量。

变量默认为全局变量。

 

变量分为三种:

1、全局变量

2、局部变是

 

Javascript的变量名也可以使用$符号,但$是变量名的一部份,例如在jQuery中$就是jQuery的别名.

 

局部变量申明用var语句定义

例:var sqlstr;

 

若不使用var,则此变量申明为全局变量。

例:color='#111';

 

 

 

 

全局表

global 对象

$GLOBALS 对象

window 对象
定义常量 变量名首字符是下划线表示成员常题
变量名首字符是下划线并大写表示全局常量
变量前面加上::修饰符表示全局常量

常量值赋于任何非null值以后即不可修改为其他不同的值
使用 const与define 定义常量,

1、const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。
2、define不能在类中定义而const可以。
3、const不能在条件语句中定义常量
4、const采用一个普通的常量名称,define可以采用表达式作为名称。
5、const的值只能接受静态的标量,而define可以采用任何表达式。
6、const 总是大小写敏感,然而define()可以通过第三个参数来定义大小写不敏感的常量。

例:

define('≈PI', M_PI); 
const CHARSET = "中国";
不支持定义常量( 字面常量除外 )
成员操作符 对象.成员 对象->成员 对象.成员
定义类

//AAuto代码:

class myclass{

    
//ctor定义类的构造函数
    ctor(  ){ 
        
/*
        构造函数中可以用
        var语句定义在类作用域内部的私有变量.
        */

        
var private = 123;
        
        
this.name = "张三";
        
this.getName = function(){
            
return this.name;
        }
        
this.setName = function(name){
            
this.name = name;
        }
    };
    
    
//下面的这样增加类实例成员的方法,
    //javascript是不支持的
    age = 23;
    gohome = 
function(){
        io.print(
"I'm back")
    }
 
}


//创建类实例对象
var object = myclass() 

//PHP代码

 

class Cart{
    
//定义成员变量, 
    //PHP里var可不是定义局部变量的意思
    var $items = 123; // 购物车中的项目

    
// 把 $num 个 $artnr 放入车中 
    function add_item ($artnr, $num){
        $this->items[$artnr] += $num;
    }

    
// 把 $num 个 $artnr 从车中取出

    
function remove_item ($artnr, $num){
        
if ($this->items[$artnr] > $num) {
            $this->items[$artnr] -= $num;
            
return true;
        } 
else {
            
return false;
        }
    }
}


//创建类对象实例
$a = new Cart;
echo $a->items;//注意这里items前面不能再加$符号

//Javascript代码

function myclass(){
    
this.name = "张三";
    
this.getName = function(){
        
return this.name;
    }
    
this.setName = function(name){
        
this.name = name;
    }
}


  

JS用new关键字来创建对象实例

 

obj = new 函数名或对象名 obj = new 函数名(构造参数)

语句 io.print("hello world");
尾部的分号可以省略,函数调用的圆括号不能省略
<?php echo "Hello World"; ?>
尾部的分号不能省略,函数调用的括号可以省略.
document.write("Hello world");
尾部的分号可以省略,函数调用的圆括号不能省略
数组定义

有两种数组

 

  • 数值数组 带有数字 ID 键的数组
    var names ={"Peter";"Quagmire";"Joe"};

    //创建指定长度数组
    array = table.array( 10 )

    //创建多维数组
    array = table.array(3,5,{} )

  • 关联数组 数组中的每个 名字关联一个值
    ages = { Peter = 32 ; Quagmire = 30;Joe=34 };


数组成员也可数组,构成多维数组。

 

在AAuto中只有一种数据结构,即表(table),表可以包含顺序数组,也可以包含稀疏数组,关联数组等

AAuto使用分号分隔成员,并使用等号分隔键值对 .

有两种数组类型:

  • 数值数组 带有数字 ID 键的数组
    $names = array("Peter","Joe");

  • 关联数组 数组中的每个 ID 键关联一个值
    $ages = array( "Peter"=>32, "Quagmire"=>30, "Joe"=>34);


数组成员也可数组,构成多维数组。

PHP使用逗号分隔成员,并使用=> 分隔键值对

有两种数组

 

  • 数值数组 带有数字 ID 键的数组
    var names = ["Peter", "Quagmire", "Joe"];

    也可以这样写
    var names = new Array("Peter","Quagmire","Joe");


  • 关联数组 数组中的每个名字值关联一个值
    var ages = [];
    ages["peter"] = 32;
    ages["Quagmire"] = 30;

 

数组成员也可数组,构成多维数组。

 

在javascript还可以使用大括号定义对象,
对象类似AAuto中的table(表),也是在大括号中定义:

 

定义一个Javascript 对象:
var user = {"name":"zhangs", "age":28};

也可以写成:
var name =  "zhangs", user = {name:name, age:28};


avascript使用逗号分隔成员,并使用冒号分隔键值对

数组元素数量 取数组使用 #操作符

array = table.array( 10 )
数组长度 = #array;

使用 table.range(array ) 则可返回数组的最小,最大索引.
count() 函数计算数组中的单元数目或对象中的属性个数。 对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。语法:
count(array,mode)
length 属性可设置或返回数组中元素的数目。
数组的 length 属性总是比数组中定义的最后一个元素的下标大 1。对于那些具有连续元素,而且以元素 0 开始的常规数组而言,属性 length 声明了数组中的元素的个数。语法:arrayObject.length
数组
尾部追加成员
array = {}

table.push( array,"追加成员" ) //返回数组长度

$names = array("Peter","Joe");

names[] = "Quagmire";


//也可以这样写
array_push($names, "apple", "apple2");

var a = [1,2,3,4,5]; 

var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7

数组尾部弹出成员

table.pop( 数组对象,弹出个数)

 

用于删除并返回数组的指定个数元素,如果个数为负数表示弹出元素反向排列。

 

如果省略第二个参数,则与PHP,Javascript用法一样,弹出最后一个元素。

arrayObject.pop()

 

用于删除并返回数组的最后一个元素

array_pop(数组对象)

 

弹出并返回 array 数组的最后一个成员

截取数组

table.slice( 数组对象,开始位置,结束位置)

 

返回截取数组

array_slice ( 数组对象, 开始位置,长度)

 

返回截取数组,注意第二个参数是指定长度,而不是结束位置

数组对象.slice(开始位置,结束位置)

 

返回截取数组

定义函数 function 函数名(参数){

   
return 返回值,返回值2
}
AAuto函数可以返回多个值
function 函数名(参数){

   
return 返回值
}
function 函数名(参数){

   
return 返回值
}
定义字符串 字符串可以放入单引号或双引号, 在双引号中不支持转义符,在单引号中可使用转义符.例:

str = "abcd"
str = 'abcd\t'

AAuto中字符串可以直接换行,双引号将换行解释为'\n',而单引号忽略所有换行
字符串可以放入单引号或双引号
$str = "abcd\t"
$str = 'abcd'

 

双引号中支持转义符,但单引号不支持,与AAuto正好相反.这也意味着,单引号速度比双引号解析字符串的速度更快

字符串可以放入单引号或双引号,都支持转义符
var str = "abcd\t"
var str = 'abcd\t'

字符串连接 使用两个加号连接
var str = "字符串" ++  "字符串"

连接字符串字面量时也可以省略为一个加号,例:
var str = "字符串" + "字符串"
使用一个圆点连接
$str = "字符串"."字符串"
使用加号连接
var str = "字符串" + "字符串"
字符串分割
用法示例:

var 数组 = string.split("a,b,c,d",",")

explode– 将字符串分割到数组中

说明:

array explode ( string pattern, string string [, int limit])


注: php中也有split函数,但使用正则表达式分割,其他用法一样,explode()函数速度更快一些

split() 方法用于把一个字符串分割成字符串数组。

语法:

stringObject.split(separator,howmany)

返回部分字符串


用法示例:

 

var str = string.sub("12345",2,5)

substr() 函数返回字符串的一部分。

 

语法:

 

substr(string,start,length)

substr() 方法可在字符串中抽取

从 start 下标开始的指定数目的字符。

 

语法:

stringObject.substr(start,length)

模式匹配 AAuto使用一种快速轻量的模式匹配语法,基本语法基本类似正则表达式,但是速度更快,使用更简单,并且所有AAuto函数默认支持

另外通过标准库 string.regex 也可以支持正则表达式.
支持正则表达式 支持正则表达式
数学函数 所有数学函数都在math名字空间


io.open() //下取整
io.print( math.floor(5.1) )
floor() 函数向下舍入为最接近的整数。 语法: floor(x)返回不大于 x 的下一个整数,将 x 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。实例:<?php echo(floor(5.1)); ?> floor() 方法可对一个数进行下舍入。 语法: Math.floor(x)floor() 方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数。实例:<script type="text/javascript"> document.write(Math.floor(5.1) + "<br />") </script>
数学函数 语法:math.round(x,prec)返回将 x 根据指定精度 prec (十进制小数点后数字的数目)进行四舍五入的结果。prec 也可以是负数或零(默认值)。 round() 函数对浮点数进行四舍五入。 语法:round(x,prec)返回将 x 根据指定精度 prec (十进制小数点后数字的数目)进行四舍五入的结果。prec 也可以是负数或零(默认值)。实例:<?phpecho(round(0.49)); ?> round() 方法可把一个数字舍入为最接近的整数。 语法:Math.round(x)与 x 最接近的整数。实例:<script type="text/javascript">document.write(Math.round(0.49) + "<br />") </script>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多