javascript基础知识
1、varmsg;//声明一个变量,在没有给此变量赋值以前,该变量名为:undefined
2、msg="hello";//不适用var则可以声明一个全局变量,但是此变量因为是全局的,所以容易引起其他调用的一些问题,故不推荐
3、javaScript有5种基本数据类型,Undefined、Null、Boolean、Number和String;以及一种复杂数据类型:Object
4、varnum=076;//代表的八进制,以0开头,假如后面的数值超出8的范围,例:08、079等,则按十进制解析
5、varnum=0x22;//代表十六进制
6、NaN->NotaNumber;//非数字,NaN不和任何值相等,包托它自己;判断一个值是否可以转换为数值的方式:isNaN(*),*为所要进行转化的数据
7、向Number转化时,false->0;true->1;""->0;"00022"->22;"helloworld"->NaN;注:采用的是Number()方式
8、假如采用parseInt()方式进行转化则与7(对字符串来说)不同,基本原理如下:
1)对String的第一个非空格字符进行解析,若是空格则跳过,假如是非数字或者负号,则直接返回NaN;
2)对接下去的字符继续解析,直到遇到非数字或者解析完成,返回已经解析的内容;
3)如果解析到字符串的非空格字符以0x开头且后面加16进制字符则转换成16进制,若是0开头且后面加8进制字符则转换为8进制;
例:"1234blue"->1234;""->NaN;"0xA"->10;"070"->56;"22.5"->22;" 12457blue"->12;解析时只跳过1)中出现的空格
9、还可以采用parseInt(*,*)方式,后面一个变量代表的是所要转换的进制;可选16,10,8,2等,例parseInt("10",16)->16,此时不需要再添加0x或者0
10、toString()方法一般不必使用参数,true->"true",都是按照字符串来转换,但是当由数字转换为String时,可以添加参数,用于设置进制
例:varnum=10->String-------num.toString()->"10";num.toString(2)->"1010";num.toString(8)->"12";
11、在JavaScript中以32位数据表示一个数,左移<<不会改变符号位,例:2<<5;-->64即:10->1000000
12、右移分为两种:有符号右移和无符号右移:
1)有符号右移:>>只移动数据位,不移动符号位:-64>>5---->-2
2)无符号右移:>>>所有的都要移动,因此负数移动之后会变为正数,且此正数一般非常大
12、switch语句中的case非常强大,可以是数值,也可以是字符串甚至表达式
13、javaScript中function()中可以不添加参数,对于其来说其实是由arguments[]接收的
14、javascript没有块级作用域,如下例子:
if(true) { varcolor="blue"; } alert(color);
会打印出blue出来,这个仅限于alert语句是位于全局环境中,但是在类C语言中则不会出现此种情况,一般都会销毁for函数等循环函数除外,在javascript中也会销毁。
15、instanceof语句用于判断是否属于某种数据类型,或者某种对象:personinstanceofObject//变量person是Object?若是则返回true
16、将变量值设置为null可以解除对此变量的引用,javascript的垃圾收集器在下次运行时会将其回收
17、引用类型与类相似,但是不是一码事!创建一个引用类型有两种方法:
1)
varperson=newObject();//Object是javascript中最常用的一个引用类型 person.name="zhangsan"; person.age=30;
2)
varperson={ name:"zhangsan", age:30 //注意此处没有","! };
3)是2)与1)的结合
varperson={}; person.name="zhangsan"; person.age=30;
上述3种方法中第二种是最常用的
18、对象有三种:user-defined-object(用户自定义对象),native-object(内置对象)和host-object(宿主对象)
其中native-object是内置在javascript中的对象,如Array、Math和Date等,而host-object是浏览器提供的对象。
19、JavaScript中打开一个新的窗口用:window.open(url,name,features),这三个参数都是可选择的,说明如下:
1)url是要打开的窗口的地址
2)name是新窗口的名字,可以通过name与新窗口进行通讯
3)features是一个以","分割的字符串,如"height:300,width:200",其内容是新窗口的各种属性
20、可以在html文档中直接调用javascript功能,这个得使用javascript:xxxxxx的方式,其中javascript被称为javascript伪协议
例,有某方法:functiontest(){}
<ahref="javascript:test()">test</a>//此种方法就是使用javascript伪协议进行调用javascript方法,此种方法非常不提倡,因为不同浏览器对此种伪协议的支持是不一样的。
21、很多节点的内容并不在其value中,如:<pid="desc">Helloworld</p>,此时可以用vartext=document.getElementById("desc").firstChild.nodeValue;
此处text得到的值为:HelloWorld
22、在html文档中插入一个新元素的方法:
1)创建一个新的元素(包括其内容等)
2)把这个新元素插入节点数
说明:1)创建新元素的方法:varpara=document.createElement("p");//创建一个<p></p>
此时这个元素已经具有了<p>的所有属性,但是里面还没有内容,并且并未插入到文档中
然后用vartxt=document.createTextNode(text)方法创建一个文本节点内容,将这个文本节点内容插入到<p>中
2)parent.appendChild(child)//方法可以将某个child元素插入到parent元素下
包括两部分的工作:1-将文本节点插入到<p>节点下,para.appendChild(txt);2-将<p>节点插入到其他节点下
23、set和get方法也可以为一个对象设置属性,称之为存储器属性,它可以实现比较复杂的运算,如:
varm={ x:1,//数据属性 y:1,
getr(){returnMath.sqrt(this.x*this.x+this.y*this.y);},//存储器属性,此种属性写法:set(或get)属性名称(param(set方法有)){函数体} setr(newvalue){ varoldvalue=Math.sqrt(this.x*this.x+this.y*this.y); varradio=newvalue/oldvalue; this.x*=ratio; this.y*=ratio; } }