JavaScript

来源:互联网 发布:宁波seo大牛 编辑:程序博客网 时间:2024/06/05 05:21
JavaScript是一种弱类型的语言:变量的类型可以随着赋值的类型不同而发生变化
//强类型的语言:一个变量一旦声明为某种类型,该变量的数据类型就不可再变
动态的语言:可以在程序运行的过程中,给对象增加或删除成员(属性、方法)
基于原型的编程语言 没有类只有原型对象object 所有的对象都继承原型对象
JavaScript是解释型的语言 跨平台


JavaScript
变量 方法 对象 数组(没有类)
三种方式 
行内:<标签 事件属性="javascript:JS代码">
内嵌:<script type="text/javascript">//JS代码</script>
外链:<script src="myJS"type="text/javascript"></script>


JavaScript
4种基本数据类型(原始类型):Undefined、Boolean、Number、String 
1种引用类型:Object
Undefined只有一个值:undefined
Boolean只有两个值:true  false
Number存储整数小数和NaN(Not a Number)
String存储字符串 JS 中单双引号的值都是字符串 
1种引用类型:Object
Object 存储对象和null


声明变量 关键字var
var  变量名;
var 变量名=  值;
注意:
var不是数据类型 声明变量在未赋值之前默认值都是undefined
JavaScript中关键字var和语句的结束符(;)都可以省略,但应避免这样做
JavaScript中任何变量都必须初始化之后才能使用
命名规则和Java一样,也要区分大小写
JavaScript中没有类,只有对象。所有对象都继承原型对象(object对象);所以,JS也被称为基于原型的编程语言






关键字:typeof 
用于获取变量的数据类型
语法:typeof 对象
instanceof 和java中一样 可以判断数据是否属于弄一类型
<script type="text/javascript">
var v;
//获取变量v的数据类型
alert(typeof v);
v=1;
alert(typeof v);
v=abc
alert(typeof v);
</script>
typeof null 结果是Object


Undefined
当声明的变量未初始化时 该变量的默认值就是undefined
当时有typeof获取未声明的变量时 得到的也是undefined 但是注意未声明的变量只能和typeof一起使用 否则报错






NaN==NaN   结果为false
NaN 表示 Not a Number
var vn= NaN;
alert(vn==NaN);//false
判断一个变量的值是否是NaN使用isNaN方法 :isNaN
var vn= NaN;
alert(isNaN(vn));//true




var v1=1;
var v2=1;
var v3=“1”;
alert ()


String
常用属性 length
常用方法 
charAt  根据下标或取字符
indexOf  指定字符在字符串中下标(从左往右 第一次出现的)
lastIndexOf 指定字符在字符串中下标(从右往左 第一次出现的)
substring 截取字符串
toLowerCase 转换成小写
toUpperCase 转换成大写


数据类型的转换
转换成字符串;
 对象.toString()
    var v=13;
    alert(typeof v);//number
    var str = v.toString();
    alert(typeof v);//number
    alert(typeof str);//string
    
  new String(被转换数据);
    var s = new String(13);
    alert(typeif s);//弹出Object javascript中所有new出来的数据 都是基础原型对象object的 所以类型也是object
    alert(s)//弹出13


数字转换成字符串 
两种模式
默认模式:以十进制转化
基模式:toString(进制)
var num=10;
alert(num.toString(2));弹出1010
alert(num.toString(8));弹出12




转换成数字
parseInt ()(转换数据时 一个字符一个字符转换 遇到第一个不能被转换成数字的字符时 停止转换 并保留之前转换成功的数值)
parseFloat ()(转换数据时 一个字符一个字符转换 遇到第一个不能被转换成数字的字符时 停止转换 并保留之前转换成功的数值)
Number()(转换数据时 将整个字符串统一转换 如果转换失败 则返回NaN)




var str="123.123"
var int = parseInt(str);
alert(int);//123   将字符串转换成整型
var float = parseFloat(str);
alert(float);//123.123 将字符串转换成小数
var num = number(str);
alert(num);//123.123 




var str="123.abc"//java中异常 类型转化异常
var int = parseInt(str);
alert(int);//123   
var float = parseFloat(str);
alert(float);//123
var num = number(str);
alert(num);// NaN 




转换成布尔值:Boolean();
var str1 =" ";
var str2 = null;
var str3 ;
var i = 0 ;
// false 空字符串("") 、数字0、undefined、null、
//除了以上四个值转换成Booler类型后的值为false,其他转换成Boolse类型后值为true
var b1 = new Boolean(str1);
var b2 = new Boolean(str2);
var b3 = new Boolean(str3);
var b4 = new Boolean(i);
alert(b1);//false
alert(b2);//false
alert(b3);//false
alert(b4);//false


undefind和null进行只比较值时结果为true
var un;
var nu = null;
alert(un==nu);//true
alert(un===nu);//false
运算符
算数、关系、逻辑、位、赋值、条件(?:)运算符都和java中一致


==和===(全等)
==只比较值是否相等;===即判断类型也判断值,只有都相同才为true
!=只比较值是否不相等;!==一个不相同结果就为true
注意:null==nudefined 结果为true
JS的底层实现undefined是从null派生出来的所以值相等;但是null===undefined结果为false 因为类型不同




流程控制
if 、 if-else 、 switch、for、while、do-while都和java中一样
java中的增强for循环主要是用于循环的集合,数组


for in语句:遍历对象的属性
语句for(var 变量 in 对象){}
var obj = new Object();
//动态的语言:可以在程序运行的过程中,为对象增加或删除成员(属性 方法)
//向对象添加一个属性name
obj.name="张三";
for(var property in obj){
alert(property);//name 循环获得的是对象的属性名
alert(obj[property]);//张三 获取name属性的值   对象[变量/字符串常量]
}


数组
var arr = new Array();
var arr = new Array(长度值);
var arr = new Array(元素1,元素n);
var arr = [元素1,元素n];


//数组长度不是固定的


var arr = ["a","b","c"];
for(var index in arr){
alert(index);//0  1  2  如果arr为数组 index 获得的就是下标
alert(arr[index]);// a  b c
}
注意:
实用小括号 不能使用[]
new Array[长度值];×
删除数组元素:delete 数组名[下标]
使用增强for循环遍历数组
for(var v in arr){
//v获取的是下标不是属性值
}




方法
function(函数):有些书中把它列为一种数据类型,依据是typeof的结果中有function 


方法没有返回值
申明方法
方式一:最常用的方式(建议使用)
function 方法名([参数列表]){
//方法体
[retuen [返回值];]
}
方式二:
var 变量名 = function([参数列表]){}
方式三:var 变量名 = new Function(["参数列表"][,"方法体"]);


参数列表直接使用变量名即可 不需要使用var 声明 不能有返回值类型




声明方法
JacaScript中方法也是一个对象,可以将方法复制给另一个变量;
var 变量名 = 方法名; //不能有小括号
调用
变量名m();//必须加小括号
方法对象也有属性和方法
length属性:获取形参的个数(最多25个)
valueOf 和 toString()方法  获取方法的源码


arguments
模拟函数重载:用arguments对象获取传入的参数
function doAdd(){
if(arguments.length==1){
alert(arguments[0]+5);}
else if(arguments.length==2){
alert(arguments[0]+arguments[1]);
}
}
doAdd(10);//输出15
doAdd(40,20);//输出60


创建对象
语法:var 变量 = new 原型对象();
访问对象属性的方式
1 对象.属性名
2 对象[变量]


关键字delete
JavaScript也被称为动态语言
可以在运行中删除或者减价对象的属性和方法
delete 删除对象属性或方法的引用
var o = new Object;
o.naem="张三";//添加属性name
o.m = function(){};//添加方法m
alert(o.naem); //输出张三
delete o.name;//删除属性name;
alert(o.name);//输出undefined


伪对象
包括布尔值 数字和字符串这些原始值 他们都是伪对象
伪对象是原始值 存储在栈内存上 并且具有属性和方法




库对象
内置对象(built-in object)
相当于Java中的类;只有Global和Math
通过Math获取随机数
alert(Math.random());
库地对象(native object)(含内置对象)
相当于Java中的类;
Object  Function  Array  String Boolean  Number  Date  RegExp(正则表达式)  Error  EvalError RangeError   ReferenceError  SyntaxError  TypeError  URIError
宿主对象(host object):   //所有BOMDOM对象BOM 浏览器对象模型和
DOM 文档对象模型对象(两类对象)




异常
JacaScript 没有throws 
只有try、catch、finally和throw
功能和Java中一样


System.out.println();
document.write();


输出空格
document.write("&nbsp")
换行
document.write("<br/>")