一、前言
JavaScript和java的语法大相径庭,所以在学习体会到全新的知识
二、JavaScript的变量
var 变量名;
如:var i;
javascript是一门弱类型的语言,没有编译阶段一个变量可以随意赋值。
var i; i=true; i=1.23; i=new Object(); i="abc";
这里的var可以表示任何类型。
var i; //i没有赋初始值默认是undefined
一个变量没有赋初始值,默认是undefined ,undefined在js是一个具体存在的值。
测试代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> var i; alert("i的默认值是"+i); </script> </body> </html>
一个变量如果没声明直接用则会报错
<script type="text/javascript"> alert(i);//i没声明。则会报i is not define的语法错误 </script>
下列的结果是:
<script type="text/javascript"> var i,b,c=10; alert("i="+i+",b="+b+",c="+c); </script>
结果:
js中的变量命名规范和规则差不多,但是变量的赋值就相差很远,Java是一门强类型的语言,而JavaScript是一门弱类型的语言。
怎么理解强类型和弱类型的语言呢?
java语言存在编译阶段,假设有代码:int i;
那么在Java中有一个特点是;java程序编译阶段就已经确定了 i变量的数据类型,该i变量的数据类型在编译阶段是int类型,那么这个变量到最终内存释放,一直都是int类型,不可能变成其他类型。强制类型转化变得也只是语法面上,对象的类型还是不变。
Java中要求申明的时候是什么类型就一直的是什么类型,不可变,这就是强类型。
JavaScript是一个弱类型是因为在声明的时候不需要指定数据类型,变量的类型是有值来定的。
三、函数初步
函数必须调用才会生效
js的函数类型没有限制和参数个数没有限制,函数名是唯一标识。
函数的定义格式:
方式①:
<script type="text/javascript"> function 函数名(形式参数列表){ 函数体; } </script>
示例:
<script type="text/javascript"> function sum(a,b,c){ alert(a+b+c); } </script> //函数必须调用才能执行: sum(10,20,30);
方式②:
<script type="text/javascript"> 函数名= function(形式参数列表){ 函数体; } </script>
将函数封装在点击事件:
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> didi=function(a){ alert("hello"+a); } </script> <input type="button" value="按钮呀" onclick="didi(' everyone');"> </body> </html>
js中的函数不能重载
函数参数中的几个场景
情景1:传入参数不足
<script type="text/javascript"> didi=function(a,b){ alert (a+b); } didi("hello"); </script> //只传了一个 结果会是第一个参数赋值,另一个没赋值的默认是undefined,所以结果是helloundefined (字符串拼接)
情景2:传入参数过多
<script type="text/javascript"> didi=function(a,b){ alert (a+b); } didi(1,2,3,4); </script> //传入过多个,只会计算函数参数多少个,所以只取2个,结果是1+2=3
情景3:无参数传入
<script type="text/javascript"> didi=function(a,b){ alert (a+b); } didi(); </script> //没传参 结果是NaN,NaN表示具体存在的值,这个表示不是数字(Not a Number)
情景4:多个函数同名
<script type="text/javascript"> didi=function(a){ alert (hello); } didi=function(a,b){ alert ("hi"); } didi("xiu") </script> //结果是 hi,因为函数同名后面的会覆盖前面的
函数名不能重名,否则后面的函数会覆盖前面的,因为是自上而下执行程序