黑马程序员---JavaScript基础摘要
JavaScript是基于对象和事件的脚本语言.JS是Netscape公司的产品,是弱类型语言非严谨;运行在客户端.
特点:1.安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互.
2.跨平台性(只要是可以解释JS的浏览器都可执行,和平台无关)
JavaScript需要被浏览器所解释执行,就必须将代码和html相结合.如下两种方式
a.通过定义<script>标签将JS代码存其中,并指定type属性方便浏览器启动指定的解析引擎.
b.还可通过<script>标签,使用src属性连接一个指定的js文件进来.
例: <script src="Test.js"
type="text/javaScript"></script>//规范中script标签中必须加入type属性;
JavaScript基本语法:
1.变量
通过var关键字定义变量,该变量可以赋予不同类型的常量,弱类型不用指定具体的的数据类型.JS中没有具体数据类型的限制,使用时要注意.(如下代码)
1 var x=3;//可以是int 2 x="abc";//可以是字符串 3 x=tue; //可以是布尔 4 x=3.52;//可以是double,没有类型可言所以说JavaScript是弱类型语言,什么类型都可以存放. 5 //undefined:特殊的常量,当变量没有初始化就被使用该变量的值就是未定义.
2.语句(与c#语句格式相同)
a.判断结构if语句
var y=3;
if(y==6) //可以进行比较运算
if(y=6) //可以进行赋值运算,而且可以同样进行判断,不报错.因为在JS中0就是false,非0就是true(通常用1表示),所以if(y=6)结果是true;
b.选择结构(switch语句)
c.循环结构(while,do...while,for语句)使用逻辑运算符进行布尔表达式连接的时候,需要短路与和短路或:&&
||.因为JS中,非0即为true;0为false,非null为true,null为false.
d.JS特有的语句:
with(对象){}:可以确定对象所使用的范围.在范围中,可以直接使用指定对象的属性和行为,而不用对象点的形式调用,简化了对象的操作.for(变量
in 对象){}:可以对对象的属性及行为进行遍历.如下代码
1 var y = new Date(); //创建时间对象; 2 with (y) { 3 //弹出当前年,月,日,星期对话框. 4 alert(getYear()+"年"+(getMonth()+1)+"月"+getDate()+"日"+"星期"+getDay());//不用对象点的形式调用 5 }
e.数组
对于JS的数组特点在于,数组的长度是可变的,相对与c#中的集合,该数组中可以存放的元素类型是可以不同的.
定义格式:如下代码
1 var arr=[3,true,"abc",3.56];//相当于ArrayList集合;存放的数据类型是object. 2 arr[4]="hong";//动态添加元素 3 for(var i=0;i<arr.length;i++){ 4 alert(arr[i]); //操作形式和c#一样,都是通过for进行遍历,同是也使用了指针思想. 5 }
3.函数
通过function关键字定义函数
a.一般函数
格式:function函数名(形式参数...)
{
执行语句;
return 返回值;
//通常提供代码复用可以将代码封装成函数.两个明确:@>明确该功能实现后的结果.@>该功能在实现过程中是否有未知内容参与运算.
}
函数是多条执行语句的封装体,只有被调用才会执行.调用有参数的函数,但没有给其传值函数一样可以运行,或者调用没有参数的函数,给其传值该函数也一样运行.说的简单点,只要写了函数名后面跟了一对小括号该函数就会运行.
function Demo() //定义函数
{
alert(arr.length) //在函数中有一个参数数组对象(arr)该对象将传递的参数都封装在一个数组中
}
Demo("hello",365,true); //调用函数
那么弹出的对话框结果是3,如果想得到所有的参数值,可以通过for循环遍历该数组.
for(var x=0;x<arr.length;x++)
{
alert(arr[x]);
}
为了增强阅读性最好按照规范,按定义好的形式参数传递实际参数,函数在调用时的其他写法:
var show=Demo(); //show变量接收Demo函数的返回值
var show=Demo; //这种写法是可以的,意为show和Demo代表同一个函数.那么该函数也可以通过show()的方式运行.
b.动态函数
通过JS的内置对Function实现
例:var demo=new Function("x","y","alert(x+y);"); //动态函数的定义方式
demo(6,9); //调用函数
如同:function demo(x,y){alert(x+y);} //一般函数的定义方式
demo(6,9); //调用函数
动态函数的特点:可以将参数列表和方法体作为参数传递.
c.匿名函数
一般函数的简写形式function(){}
匿名函数通常可以用于事件的处理 如下:
window.onload=function(){alert("onload over");}
4.在函数使用时需要注意的部分:
function Show(){return "show run";}
var method=Show();
var method=Show;
两句代码都是正确的,第一句表示的是Show()方法运行后的结果赋值给method变量,第二句表示的是将Show指向的对象地址赋值给method,那么method也指向了该对象.此时就可以通过method的形式来调用这个Show().
JS可以通过对象形式将数据进行封装
首先对象进行描述,通过函数来完成.
function Person(name,age) //相当于c#中的构造函数
{
this.name=name;
this.age=age;
}
var p=new Person("zhangSan",20); //为对象p属性赋值
alert(p["name"]+"..."+p.age)
p.show= function() //为对象p添加方法
{
alert("show hello");
}
5.JavaScript中已定义好的一些对象String,Math,Array,Function等这些对象都有一个属性叫做prototype原型,prototype可以通过引用给已有的对象赋予一些新的功能,那么在使用该对象时;可以直接调用定义好的新功能.如下示例
function GetMax() //定义一个求数组中最大数的方法
{
var max=0;
for(var x=1;x<this.length;x++)
{
if(this[x]>this[max]) //用角标的方式比较
max=x;
}
return this[max]; //返回最大数
}
var arr=[2,5,1,9,-3,18];
arr.sort(); //直接调用Array对象的sort()方法对数组进行排序,那么可不可以像调用sort()方法一样调用GetMax()方法呢?这时就需要将GetMax()方法添加到Array对象中,才能直接调用.
Array.prototype.GetMax=GetMax;
//通过prototype属性将方法GetMax()Array数组对象中.
var y=arr.GetMax(); //定义变量存放arr对象中的方法
alert("max="+y); //弹出最大值
6.常见的全局方法
parseInt(numstr,[radix]); //将数字格式的字符串转成整数.如果指定了基数,那么numstr就会按照执行基数进行转换.
var num=parseInt("110",2); //表示"110"这个字符串会按照二进制进行转换.
alert("num="+num); //结果num=6;
var m=6;
alert(m.toString(2)); //获得8对应的二进制表现形式(110)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。