JavaScript零碎知识点归纳
来源:互联网 发布:合优网络 编辑:程序博客网 时间:2024/05/01 08:22
1、a标签的特殊用法
<a href="javascript:alert('OK')">百度</a>
即在链接地址中写入javascript代码,结果弹出OK,而不链向百度
<a href="javascript:void(0)">不链接到任何地方</a>
2、javascript中的变量作用域
<script> var i; //全局变量 //方法名是camel命名法 function sayHello(){//方法里面的变量是局部变量 var x=100;alert(x);x++; } sayHello(); //输出100 alert(x); //报错,因为x是局部变量,访问不到 </script>2.2. 函数嵌套函数
<script>function sayHello(){ var x=100; if(x==100){ var y=x+1;<span style="white-space:pre"></span>alert(y); //输出101 } alert(y); //也输出101,在方法内部,不存在块级作用域,在C#中就不可以了!!! for(var i=0;i<2;i++){ <span style="white-space:pre"></span>alert(i) } //在for循环里面定义的变量是块级作用域 alert(i); //因为i是局部变量,所以输出2 }sayHello();</script>
注:变量使用前可以不用var声明,这样的变量会被认为是“全局变量”,但很少这样用
3、 js中的undefined与null
undefined(未知状态):
3.1、变量定义,但没有赋值,则变量的值为undefined
3.2、调用的方法没有返回值,返回的值为undefined
3.3、对象的属性值不存在,则返回值为undefined,如:document.ddd
var xx;var yy=null;if(xx==yy){ alert('相等'); } else { alert('不等');}
输出结果为相等,因为在进行if判断时,浏览器会对xx及yy进行值的判断,因为两者都没有具体的值,认为他们都是false。
如果if判断中换成===[全等于符号],则输出不等! 因为===表示要求xx及yy的数据类型和值都要相同才可以!
var xx=10 var yy='10'; if(xx==yy){ alert('相等'); } else { alert('不等');}
输出相等,如果换成===,则输出不等
var n='10'; switch(n){ case 10: alert('数字'); break; case '10': alert('字符串'); break;}
输出 字符串
总结:
if中的判断是判断数值,不考虑类型
switch中的判断要考虑类型
4、类型
var n=10;
var x;
typeof(n)的值是'number',
typeof(x)的值是'undefined',
结果有引号的!
var x=10;if(typeof(x)!='undefined' && x!=null){ alert('变量可用');} else { alert('变量不可用');}if(x){ alert('变量可用');} else { alert('变量不可用');}
两者几乎没有什么区别,但当变量x连声明都没有的话,第一种显示"变量不可用",而第二种会报错!
var x1=1;
var x2=0;
var x3='';
var x4='aaa';
var x5=null'
var x6;
if()判断后的结果分别为:true、false、false、true、false、false
<script type="text/javascript"> function f1() {alert('first f1'); } function f1(name) { <span style="white-space:pre"></span>alert(name); } f1();</script>调用 f1() 后的结果:undefined。在JS中,不存在函数重载的说法,因为变量类型都是弱类型的。
所以带有参数的方法被调用,其里面的参数类型为var,所以结果为undefined。
5、类型转换
parseInt 转成数字!
parseInt(10aaa) 输出结果为10
var n1=parseInt('adw12013s') 输出结果为NaN
Number是针对数字的,Number(参数),参数必须是整数或者小数(是'3.7'就返回3.7),是的话,就转换;不是的话,返回NaN
//下面的判断不可以(条件不成立),用第二种
if(n1==NaN){
alert('不是数字');
}
//这样就可以了
if(isNaN(n1)){
alert('不是数字');
}
关于String() 与toStirng()
<script type="text/javascript"> var v = null; v = String(v); alert(v); //结果是'null' var v1; v1 = String(v1); alert(v1); //结果是'undefined' var v2 = null; v2 = v2.toString(); alert(v2); //报错 var v3 ; v3 = v3.toString(); alert(v3); //报错</script>执行一段字符串的js代码
var js = 'var n=1;n++;'; js += 'alert(n)';eval(js);
6、字符串操作
6.1 length属性:获取字符串的字符个数。(无论中文字符还是英文字符都算1个字符。)charAt(index)方法:获取指定索引位置的字符。(索引从0开始)
6.2 indexOf(‘字符串’,startIndex)方法:获取指定字符串第一次出现的位置。startIndex表示从第几个开始搜索。
6.3 split(‘分隔符’,limit);//根据分隔符将一个字符串返回为一个数组。limit表示要返回的数组的最大长度(可自定义)。
6.4 substr(startIndex,len)//从startIndex开始,截取len个字符。
6.5 substring(startIndex,stopIndex)//从startIndex开始,截取到stopIndex位置(不包括stopIndex所在的字符)。
<script type="text/javascript"> //var uname = new String('a我不h是美女haha10086'); var uname = 'a我不h是美女haha10086'; //与上面一句等价! alert(uname.length); //输出16 alert(uname.charAt(6)); //输出 女 alert(uname.indexOf('h', 4)); //输出7(从索引4开始寻找,找到索引7发现h) //split第一个参数是分隔符,第二个参数是要返回的最大元素个数。 var result = uname.split('h'); //第二个参数不写最好! alert(result.length); for (var i = 0; i < result.length; i++) {<span style="white-space:pre"></span>alert(result[i]); } // substr与substring的比较 //从索引为2的字符开始,截取5个字符,索引是从零开始的。 var result1 = uname.substr(2, 5); //常用 alert(result1); //从第2个索引开始截取,截取到第5个索引之前。(不包括第5个索引的字符) var result2 = uname.substring(2, 5); alert(result2);</script>
7、Array对象
JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的超强综合体。
数组的使用方式:
var names = new Array();//无需初始化长度,动态
names[0] = "tom";
names[1] = "jerry";
names[2] = 12;
names[3] = true;
遍历数组(for循环)
for (var i = 0; i < names.length; i++) {
alert(names[i]);
}
for (var key in names) {
alert(key);
}
输出的是键,与C#不一样,C#的foreach输出的是值要想输出值,把alert(key)写成alert(names[key])即可。
总结:JS中遍历数组一般用for循环,遍历字典,一般用for-in循环
8、js中的对象(一般情况下,方法名开头小写,对象名开头大写)
<script type="text/javascript"> function Person() { this.name = 'Jason'; this.age = 19; } var p = new Person(); for (var key in p) { alert(key); }</script>
输出name,age
//注意:JS中数组的初始化是用[],而C#中用{},
Demo1:
<script type="text/javascript"> var names = new Array(); names['one'] = "tom"; names['two'] = "jerry"; names['three'] = 12; names['four'] = true; //当names的键不再是简单的0、1、2的时候,names.length的值就会是0,此时用for循环就不行 了,应该使用for in 循环完成 for (var key in names) {<span style="white-space:pre"></span>//注意集合中不能用names.key调用(因为它是数组,不是对象),注意与下面的对象的调用有区别 <span style="white-space:pre"></span>alert(names[key]); }</script>Demo2:
function Person(){}var r=Person(); //是方法alert(r); //输出'undefined'var r=new Person(); //是对象alert(r); //输出'Object'Demo3:
function Person(_name, _age) { this.name = _name; this.age = _age; this.sayHello = function () {<span style="white-space:pre"></span>alert(this.name+','+this.age); };}var p = new Person('Jason', 18); alert(p.age); //两句alert等价//下面的书写形式说明了。在js中对象就是键值对,键值对就是对象 alert(p['age']);alert(p['age']);
9、关于js中的扩展方法
<script type="text/javascript"> //原型 function Person(_name) { <span style="white-space:pre"></span>this.name = _name; } //扩展方发,即给Person这个原型添加了sayHi方法,以后不管哪个对象都可以直接调用了(注: prototype就是原型的意思) Person.prototype.sayHi = function () { <span style="white-space:pre"></span>alert('hi!!!'); }; var p1 = new Person(); p1.age = 19; //给p1对象自己扩展age属性,只有自己可以用,下面写成p2.age就错误了 alert(p1.age); var p2 = new Person(); //alert(p2.age); 错误,因为p2没有这个属性 p2.sayHi(); //正确---因为是扩展方法,大家都可以使用</script>Demo2: 给String这个对象添加一个判断是不是邮箱的扩展方法
<script type="text/javascript"> //下面执行的一段代码,即自己手动的给String这个对象添加了一个isEmail方法,String原本是没 有的。 String.prototype.isEmail = function () { if (this.indexOf('@') != -1) { return true; } return false; }; //添加完成之后,自己就可以使用这个方法了! var email = 'jason!@163.com'; var b = email.isEmail(); alert(b);</script>
- JavaScript零碎知识点归纳
- DOM零碎知识点归纳
- JQuery零碎知识点归纳
- JQuery零碎知识点归纳2
- JavaScript零碎知识点
- HTML与CSS零碎知识点归纳
- JavaScript基础知识点归纳
- JavaScript基础知识点归纳
- JavaScript高级程序设计零碎知识点
- 关于JavaScript的零碎知识点
- JavaScript知识点归纳之简介
- JavaScript 零碎知识点整理(一)
- 零碎知识点
- 零碎知识点
- 零碎知识点
- 零碎知识点
- 零碎知识点
- 零碎知识点
- 网上信息抽取技术纵览
- POJ 1008-Maya Calendar-模拟
- SQL Server 2008 R2 企业版/开发版/标准版(中英文下载,带序列号)
- hdu2767Proving Equivalences【STL版SCCTarjan+缩点】(有注释)
- Nova Liberty blueprints
- JavaScript零碎知识点归纳
- CASE WHEN 及 SELECT CASE WHEN的用法
- Xamarin.Android 里面的通知
- Java上的try catch并不影响性能(转)
- 黑马程序员_java多线程的同步和死锁
- Codeforces 496C Removing Columns(暴力)
- malloc的内存分配之 malloc(0)的内存分配情况
- 【知识】java中判断两个字符串是否相等的问题
- 欢迎使用CSDN-markdown编辑器