第二章:小结
- 在使用JavaScript外部脚步时,src属性可以链接到外部文件,也可以链接到外部域的文件。
<javascript src="路径" type="text/javascript"></javascript>
- 元素会按照默认的方式进行,前提是不使用defer和async属性情况下,
-
defer=”defer”属性将延迟到浏览器遇到之后才会执行,但是支持html5标准的浏览器中,会忽略这个属性,所以把延迟脚本放在页面底部是最佳选择。
-
async src=”example.js” 属性目的是为了不让页面等待脚本下载,而异步加载页面的其他内容,该属性脚本一定会在页面的load事件前执行。
-
一般应该把元素放在前面,目的是为了先加载页面,在执行脚本,防止出现空白页面的情况。
放在</body>之后
- Js的严格模式:
functiondoSomething(){
“use strict”;//开启严格模式的代码
//函数体
}
开启严格模式之后,ECMAScript一些不确定和规范的操作将会得到处理
如果有意的忽略var的操作符,会由于相应变量不会马上就有定义而导致不必要的混乱。在未经声明的变量赋值在严格模式下会抛出ReferenceError的错误。
- Typeof(操作符)用于检测给定变量的数据类型,undefind,boolean,string,number,boject,function,实例:
alert(typeof 95);--------//number
第四章:变量、作用域和内存问题
- 赋值变量值:当从一个变量复制基本数据类型值时,俩个都拥有各自的独立内存,互不影响。而复制对象时,俩着都成为引用,则都指向一个保存在堆内存的对象。
var num1=3;
var num2=num1;
num1=4;
alert(num1);---//5;
alert(num2);---//3
var o1=new object();
var o2=o1;
o1.name=”hasname”;
alert(o2.name);---//hasname;
-
基本变量和对象引用变量作为函数参数传递时:基本变量复制成另一个内部函数变量,互不干扰。而对象引用变量给出引用,即多一个引用,俩者都指向一个对象。
-
局部作用域的对象不会在全局中变现出来,在局部建立的对象在函数结束时自动销毁。
-
with(“object”)语句--将其添加到函数中,可以把object对象暂时引入到函数中,并将其添加到作用域的前端。在with执行环境中,能够创建变量和更改object对象的属性和变量。但是创建的变量是作为函数执行环境而言,是函数的局部变量,不能够作为object对象的变量或者属性。在结束with语句之后,该引用就会被销毁,重新按执行环境执行。
-
没有块级作用域:在js中,在if语句或者for语句等语句中定义的变量在语句执行完成之后不会被销毁。因为它是作为当前整个执行环境的变量(局部或者全局);
eg:for(vari=0;i<10;i++){
alert(i);
var a=”I am a”;
}
alert(i);alert(a);--//依然有效
第六章:引用类型:
- 创建对象的引用,对象字面量定义:
var object1=new object();
var object2={name:”name1”,age:29}; //以逗号隔开,最后一个无符号
varobject3={“name”:”name”,”age”:29};
varobject4={};object4.name=”name”;object4.age=29;
以上创建方法等价!!!
- 利用对象面量语法传递大量可选参数:
eg:function display(object){
if(type ofobject.name=”string”)alert(object.name+”string类型的name”);
if(type ofobject.age=”number”)alert(object.age+”number类型的age”);
}
display({
name:”thisname”,
age:20
});
display({
age:19
});
- Array中模拟类似于堆栈的堆内存(先进后出FILO):
push(任意多个内容)—将括号内的内容依次添加到数组末尾,pop()—取出数组末尾的数。
push()方法返回添加后的数组长度,pop()返回的是移除的末尾数组内容。
模拟队列方法(先进先出FIFO):shift()取出位于array中下标为0位的内容,?>即移除首位元素。
ECMAScript还提供unshift(任意多个内容)能够把任意内容插入到数组前,
顺序从左至右,依次插入。
4. 数组排序:
1.reverse()方法将数组中的项颠倒顺序。
2.sort()将数组中的每个项执行toString()方法,然后进行升序比较。Sort()方法中接受一个比较函数,如果比较函数返回一个负数,就证明比较函数中的第一个value应该位于第二个value之前。反之比较函数返回一个正数。相等返回0。
eg:var arr=[1,5,0,10,15];
sort(compare);
document.write();//15,10,5,1,0
fucntioncompare(value1,value2){
if(value1){
return 1;
}
Else fi(value1>value2){
Return-1;//返回-1:value1在value2的前面。
}
elsereturn 0;
}
function compare(value1,value2){
returnvalue1-value2;//数值比较(valueof方法返回为number),升序排列、
}
5.复制数组:
-
concat(接受一个或多个任意项)该方法为数组引用对象的方法,能够复制当前数组并将接受的参数依次添加到创建的副本数组中。并返回该数组副本。
-
slice(接受一个或者俩个数值)同为数组引用对象的方法,能够根据参数确定引用数组中项的位置,并将之提取出来,重新创建一个数组返回。
var arr=[0,1,2,5,7,9];
var arr2=arr.slice(0,3)//newarr[0,1,2];相当于是[0,3)
var arr2=arr.slice(2);//newarray[2,5,7,9];接受一个参数时,其后都选中。
var arr2=arr.slice(-3,-1);//newarray[5,7];如果出现负数,则将数组长度与之相加为位置。如果还是负数,则返回空数组。
3. splice(2个及以上数量的参数);
删除--俩个参数:第一个参数指定位置,第二个指定删除个数。array.splice(0,2);删除前俩项。
插入--3个参数或以上:第一二参数同上,第三个及以后参数为插入项。array.splice(1,0,”red”,”green”);从第二项开始插入red和green项。
替换—3个参数或以上:第一二参数同上,第三个及以后参数为替换项。array.splice(1,1,”grey”);删除第二项,并将之替换为grey。
splice方始终会返回一个数组,该数组包含splice方法删除的项(如果没有删除任何项,则返回一个空的数组)
上述原理为:不删除,为插入,删除即为替换。
- 定位查找数组项:indexOf(查找的,,查找起点位置(可选))顺序查找。
lastindexOf(查找的项,查找起点位置(可选))末尾开始向前查找。也从末尾下标为0向前计数。
俩个方法都返回要查找的项在数组中的位置,在没有找到的情况下返回-1,第一个参数要查找的项必须跟数组中的项完全相等,用==符号比较。俩者的地址要相等
- 迭代方法:都接受俩个参数,第一个为执行的函数,第二个为函数作用域(this)。
every()方法:每一item都满足函数条件时,返回true;--每一项都满足是为true。
filter()方法:返回满足函数条件的item的数组;--我要看哪些项满足条件,过滤器。
foreach()方法:为每个item都执行该函数,无返回;--我只要你们按照函数执行。
map()方法:每个item执行函数,并返回执行后的数组;--你们都执行函数,我要看你们的执行结果。
some()方法:每个item执行函数,只有要一个item执行后返回true,就返回一个true的值。--查看有没有item满足。
arra=[1,5,10,20,3,4,7];
varresult=arra.map(function(item,index,array){//index为项的索引array为数组的对象
returnitem*2;
});
console.log(result.toString());//2 10 20 40 60 8 14
- reduce()和reduceRight()累加器:他们都接受俩个参数,一个为执行的函数,一个为可选的缩小值。
执行的函数内,包含4个参数。pre为前一项,curr为当前项,index为索引,array为数组对象。当第一次运行函数式,pre为第一项,curr为第二项。
arra=[1,5,10,20,3,4,7];
result=arra.reduce(function(pre,curr,index,array) {//pre为1 curr为5
returnpre+curr;//求和示例
});
console.log(result);//50
-
Date类型:类型是早期java.util.Date类基础上构建的。
-
RegExp对象(正则表达式):
1.创建:new RegExp(/ab+c/, 'i'); //ES6新增允许的写法
a) g---global全局模式,表示正则将会依次查找并匹配整个文本。
b) i---case-insensitive忽略匹配的文本的大小写。
c) m---multiline多行匹配,即会在匹配到一行末尾时,依然会匹配下一行。
- 对象方法:reg.exec(进行匹配的字符串)该方法进行捕获字符串中的匹配值。
网友评论