js中易混淆的方法及概念

1.substring()和substr(),以及跟substring功能相似的slice()

相同点:

当参数为空时,都是返回整个字符串;
当参数为一个正数时,都返回该数起始位置到结束。

不同点:

substring(start,stop);
start和stop要求是非负整数,如果start==stop,返回“”;如果start>stop,调换位置,负数按照0来处理。
var str="Hello world!";
str.substring(1,4);   //"ell"
str.substring(4,1);  //"ell"
str.substring(-1,-4);  //""
str.substring(1,-4);   //"H"

slice(start,stop);
start和stop都可为负数,负数时从尾部开始计算,如果start>=stop,都返回“”。
var str="Hello world!";
str.slice(1,4);   //"ell"
str.slice(-4,-1);  //"rld"
str.slice(-1,-4);  //""

substr(start,length);
start可为负数,负数时从尾部开始计算。length<=0,即可理解为负数按0计算,返回“”。
var str="Hello world!";
str.substr(-5,3);  //"orl"
str.substr(3,-3);   //""

2.json和jsonp

 http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

 一个是描述信息的格式,一个是信息传递双方约定的方法。

<script type="text/javascript">
var localHandler = function(data){
    alert('我是本地函数,可以被跨域的remote.js文件调用,远程js带来的数据是:' + data.result);
};
</script>
<script type="text/javascript" src="http://remoteserver.com/remote.js"></script>

远程remote.js文件:

localHandler({"result":"我是远程js带来的数据"});

 3.slice()、splice()、split()

slice():片,String对象和Array对象

语法:slice(start,end),原来的对象不会改变

var str="Hello happy world!"
alert(str.slice(6,11))  //happy
alert(str.slice(6))  //happy world!
alert(str.slice())   //Hello happy world!

var arr = ['aa','bb','cc'];
arr.slice(1,2)  //["bb"],arr不会变,还是返回['aa','bb','cc']

splice():剪接,Array对象,会改变原来的对象

语法:arrayObject.splice(index,howmany,element1,.....,elementX)

index(必需):开始,若括号里面只有一个值,则表示index,默认长度为数组长度。

howmany(必需):多少元素

element1:可选

elementX:可选

不加可选参数element
var arr = ["George","John","Thomas","James","Adrew","Martin"];
var subarr = arr.splice(2,3);
arr;  // ["George", "John", "Martin"],原数组arr被剪切掉一部分
subarr;  //["Thomas", "James", "Adrew"]

加了可选参数element,意思是向原数组添加新的项目
var arr = ["George","John","Thomas","James","Adrew","Martin"];
var subarr = arr.splice(2,3,"William");
arr;  //["George", "John", "William", "Martin"]原数组多了一个参数
subarr;  //["George", "John", "Martin"]

var arr = ["1","2","3","4","5"];
var subarr = arr.splice(2);
arr; //["1","2"]
subarr; //["3","4","5"]

split():分裂,String对象

语法:stringObject.split(separator,howmany)

separator:必需,字符串或正则表达式

howmany:可选,指定返回的数组的最大长度

var str="How are you doing today?";
str.split(" ",3);      //["How", "are", "you"]

"|a|b|c".split("|");    //["", "a", "b", "c"]

与Array对象的join()函数的作用相反

var arr = ["George","John","Thomas"];arr.join('@')
//"George@John@Thomas"
var arr = ["George","John","Thomas"];arr.join('')
//"GeorgeJohnThomas"

4.encodeURI()和encodeURIComponent()

encodeURI(URIstring) 对URI进行完整编码,不会转义;/?:@&=+$,#
encodeURIComponent(URIstring)会转义;/?:@&=+$,#      //适合转义url
decodeURI和decodeURIComponent反转义

5.数组方法shift()、pop()、push()、unshift(),都会直接修改原有数组

shift():返回数组原来的第一个元素的值。

var arr = ["George","John","Thomas"];
arr.shift()  //George
arr  //John,Thomas

pop():返回数组的最后一个元素。

var arr = ["George","John","Thomas"];
arr.pop()  //Thomas
arr  //George,John

push():向数组的末尾添加一个或多个元素,并返回新的长度。

var arr = ["George","John","Thomas"];
arr.push("James")  //4
arr  //George,John,Thomas,James

unshift():向数组的开头添加一个或多个元素,并返回新的长度。

var arr = ["George","John","Thomas"];
arr.unshift("William")  //4
arr  //William,George,John,Thomas

  

  

 

  

  

 

posted @ 2016-05-10 11:00  简惬  阅读(675)  评论(0编辑  收藏  举报