js和php语法区别
1. 基本类型
php的基本类型分别:
1.基本数据类型:整型、小数(float/double)、字符串、布尔类型
2.复合类型:数组、对象
3.特殊类型:Null,资源类型
JavaScript的基本类型:Undefined,Null,Boolean,Number 和 String。
区别:php 有资源类型,小数分单双精度,而Js的数的类型只是Number,且有Undefined类型。
2. 字符串连接符
php 的字符串连接符是 :" . " 和 " .+ "
Js 的字符串连接符是 : " + " 和 " += "
3.数组相加
php 数组相加用: " + ",可以直接相加
Js 用函数拼接: concat
4. 大小写敏感度
php : 只有变量名区分大小写
Js : 全部区分大小写
5. 声明变量
php : 变量声明用 : " $变量名 "
Js : 变量声明 : " var 变量名 "
6.字符串函数
php 求字符串长度等函数用单独的: strlen()
Js : 是面向对象的语言,String对象内置了函数,字符串.length,直接求。
7. 函数参数问题
php : 参数多传了可以,但不可以少传
Js : 传几个都可以,有 arguments 对象接收参数
8. 数组循环
php : foreach(数组 as 变量){ ... }
Js : for(变量 in 数组){ ... }
9. 关于未定义变量
php : 为 null 类型。
Js : 为 undefined 类型
10. 关于单引号和双引号的解析机制
php : 双引号能解析特殊字符,包括变量。单引号不行。
Js : 单引号和双引号没有区别。
11.PHP嵌套函数
PHP嵌套函数,在内部定义后,全局可以访问。都具有全局作用域。
Js不行,Js按作用域链。
12. 引用传递
php : 引用传递加符号,& 。
Js : 返回引用函数前加 & , 调用也要加 & 。
13. 函数提升
php:有函数提升
Js:函数声明也有提升,表达式没有提升。
14. 数组
php: $arr = array(3); // 0=> int 3
Js: var $arr =new Array(3); // 3个元素
15.异常
Js:只有一个 try...catch...finally ,且catch(exception)没有类型
16.控制语句的区别
else if与elseif在php中都支持,js只支持前者
17.变量的作用范围
php在函数范围之外所声明的变量就是全局变量。由于函数可以视为单独的
程序片段,所以局部变量会复盖全局变量的能见度,因此在函数中并无
法直接调用使用全局变量。函数中若要使用全局变量时,必须要利用global关键字定义目标变量,以
告诉函数主体此变量为全局。
js由于原型连的关系,可直接调用
18.静态变量
PHP支持声明函数变量为静态的(static)
js随无静态变量但可以定义函数的属性来冒充静态变量
19.类型转换的不同
在javascript中
空对象和空数组转换为boolean值为true;
但在php中
空对象空数组转换为boolean值为false;
(仅在php4中空对象的boolean值为false)
包括非0的负数值,都是转换为true;
20.实形参的不同
在js中形参和实参的个数对比起来都没有限制,形参个数可以大于实参,也可以少于实参
而在php中,实参数大于形参不报错,但当实参个数少于形参个数时(并且未指定的形参未定义时就会报错)
复制代码 代码如下:
function mao(val1,val2,val3){
}
mao(aa,bb);
此时由于val3未指定实参,会报错
但当val3初始化一个值时,不报错
复制代码 代码如下:
function mao(val1,val2,val3="123"){
}
mao(aa,bb);
js中可以写一个三元表达式来给未赋值的形参给定一个初始值,不可以和php一样在形参列表里面赋值,
本质原因由于php不存在原型连,执行过程中没有变量对象。