博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript学习笔记(二)
阅读量:6567 次
发布时间:2019-06-24

本文共 7114 字,大约阅读时间需要 23 分钟。

//===延长作用于链======    // with()    function buildUrl(){        var qs="?debug=true";                with(location){            var url = href +qs;        }        return url;    }            var result1 = buildUrl();    alert(result1);        //====没有块级作用域=====    if(true){        var color = "blue";    }    alert(color); //->bule;在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境中。        for(var i=0;i<10;i++){            }    alert(i); //->10; 对于JavaScript来说,由for语句创建的变量i即使在for循环执行结束后,也依旧会存在于循环体外部的执行环境中。        //======1.变量声明=====        //对比/*        function add(num1,num2){            var sum = num1+num2;            return sum;        }        var result = add(10,20);        alert(sum); //提示错误 sum 未定义                function add(num1,num2){            sum = num1+num2;            return sum;        }        var result = add(10,20);        alert(sum); //->30;sum是全局变量*///=======2.查询标识符=========//对比    var color ="blue";    function getColor(){        return color;    }    //alert(getColor());//->"blue";查找过程:调用函数getColor()时会引用变量color。                                //(1)先搜索getColor()的变量对象,查找其中是否包含一个名为color的标识符。                                //(2)在没有找到的情况下,搜索继续到下一个变量对象(全局环境的变量对象),然后再那里找到了color    function getColor1(){        var color ="red";        return color;        //return window.color; //->"blue",此时访问的是全局环境的变量    }    alert(getColor1());    //->"red";(3)在找到的情况下,搜索就停止了。

 

//===作用链域======var color = "blue";/*function changeColor(){	if(color=="blue"){		color ="red";	}else{		color="yellow";	}}changeColor();alert("Color is now "+color);//输出 Color is now red*/ //====Object类型======//一、创建Object实例的方式有两种。//第一种是使用new操作符后跟Object构造函数/*var person = new Object();person.name = "Yoyo";person.age = 24;alert(JSON.stringify(person));*///第二种是使用对象字面变量表示法/*var person = {	name:"YY",	age:29};*///alert(JSON.stringify(person));//alert(person.name);//alert(person["name"]);//====对象字面量======/*function displayInfo(args){	var output = "";	if (typeof args.name == "string") {		output += "Name:" + args.name + "\n";	}	if(typeof args.age=="number"){		output+="Age:"+args.age+"\n";	}	alert(output);}displayInfo({	name:"YY",	age:24}); displayInfo({name:"Yoyo"});*///========Array=========var colors = ["red","blue","green"];//alert(colors[3]);colors[2]="black";colors[4]="brown"; //当大于数组长度时,会自动添加到数组,长度加1.//alert(colors);//if(colors instanceof Array){ //instanceof Array确定某个对象是不是数组//	alert("colors is Array.");//}//======1.arrayObject.join(separator)====alert(colors.join("-")); //若某一项是null或者undefined,那么该值在join()、toLocaleString()、toString()和valueOf()方法的返回的结果中以空字符串表示。
//===栈方法====var colors = new Array();var count = colors.push("red","green");//alert(count); //->2//alert(colors); //red,greencount = colors.push("black");alert(colors.length); //->3alert(count); //->3var item = colors.pop();alert(item); //->blackalert(colors.length); //->2

 

//===shift()与 push()结合使用模拟队列====var colors = new Array();colors.push("blue","red");alert(colors); //blue,redvar item = colors.shift();alert(item); //blue; blue出队alert(colors); //red; colors长度减1

 

  

1 //====unshift()与pop()结合反向模拟队列=====2 var colors = new Array();3 var count = colors.unshift("blue","red");4 alert(count); //25 alert(colors);//blue,red6 colors.unshift("hello"); //插入到队头7 alert(colors); //hello,blue,red8 colors.pop();//尾出队9 alert(colors); //hello,blue

 

//=======reverse()反转数组 、sort()数组排序=====var values = [1,2,3,4,5];values.reverse();alert(values); //5,4,3,2,1var values1=[10,8,19,20,3];values1.sort();alert(values1); //10,19,20,3,8            //sort()方法会调用每个数组项的toString()转型方法,然后比较。//sort()与比较函数一起,可以完成数值排序function compare(v1,v2){    if(v1
v2){ return 1; }else{ return 0; }}var values2=[10,8,19,20,3];values2.sort(compare);alert(values2);//简化compare()函数function compare(v1,v2){ //return v1-v2;//升序 return v2-v1;//逆序}var values3=[10,8,19,20,3];values3.sort(compare);alert(values3);

 

//===concat()===不影响原数组的值var colors = [1,2,3,4];var colors2 = colors.concat("yellow",1 ,2,[3,5]);alert(colors.join("-")); //1-2-3-4 ;colors没有变化alert(colors2); //1,2,3,4,yellow,1,2,3,5 //===slice()====不影响原数组的值var colors3 = colors.slice(1);//2,3,4var colors4 = colors.slice(1,3);//2,3var colors5 = colors.slice(-1); //4 ;取出最后一个元素alert(colors3);alert(colors4);alert(colors5);
//===splice()方法var arrays=["hello","ok","you",3,4,5,6];//1.删除操作:splice(第一项的位置,要删除的项数)var removed = arrays.splice(1,2);//删除ok 和 youalert(arrays); //hello,3,4,5,6alert(removed); //ok,you//2.插入操作:splice(起始位置,0,要插入项)removed = arrays.splice(2,0,"yoyo","good");alert(arrays);//hello,3,yoyo,good,4,5,6alert(removed instanceof Array); //返回的是空数组//3.替换操作:splice(起始位置,要删除项,要插入项)removed = arrays.splice(1,1,"come","on");alert(arrays.join(' '));// hello come on yoyo good 4 5 6alert(removed); //3

 

//===indexOf()与lastIndexOf()==//这两个方法都返回要查找的项在数组中的位置,没有找到的情况下返回-1var numbers = ["hello",2,3,"yoyo",47,55,61,17,18,59];alert(numbers.indexOf("yoyo")); //3; 正向查找alert(numbers.lastIndexOf(18)); //8;从后往前查找alert(numbers.indexOf("Good")); //-1

 

var person = {name:"Nicolas"};     var person1 = {name:"Yoyo"};    var people = [{name:"Nicolas"}];    var morePeople = [person1,person];    //alert(person instanceof Object); //true; person是一个对象    //alert(people instanceof Array); //true;  people是一个数组    //alert(morePeople instanceof Array); //true;morePeople是一个数组    //alert(people.indexOf(person)); //-1    alert(morePeople.indexOf(person)); //1

数组的5个迭代方法:

//function(item,index,array)三个参数 array[index]=item//1.every()var numbers = [1,2,3,4,5,6];var everyResult = numbers.every(function(item,index,array){    return (item>2);});//alert(everyResult); //false;不是数组中的每一项都大于2//2.map()操作数组中的每一项,最终返回一个数组var mapResult = numbers.map(function(item,index,array){    if(item<4){        //alert(array[index]); //会打印出当前数组中该索引对应的值        return item*2;    }else{        return item;    }});//alert(mapResult); //2,4,6,4,5,6;//3.filter()按照指定条件过滤数组中的选项var filterResult = numbers.filter(function(item){    if(item%2==0){        return item;    }});//alert(filterResult); //2,4,6//4.some()只要数组中的选项有一个满足条件,就返回True,否则返回falsevar someResult = numbers.some(function(item,index,array){    return (item==4);});//alert(someResult); //true//5.foreach()该方法没有返回值,本质上与使用for循环迭代数组一样var count=0;numbers.forEach(function(item,index,array){    count++;});//alert(count);
//ECMAScript5有两个所辖数组的方法:reduce()和reduceRight()。这两个方法都会迭代数组的所有想,然后构建一个最终返回的值。    //reduce()从数组的第一项开始,逐个遍历到最后.    //reduceRight()则从数组的最后一项开始,向前遍历到第一项.    //function(prev,cur,index,array)四个参数:前一个值、当前值、项的索引和数组对象。函数返回的任何值都会作为第一个参数自动传给下一项。    var  values = [1,2,3,4,5];    var sum = values.reduce(function(prev,cur,index,array){        return prev+cur;    });    alert(sum);
//==Date==var start = Date.now();//alert(start); //输出从1970年1月1日零时开始的毫秒数var someDate = new Date(Date.parse("May 25,2014"));//alert(someDate);var someDate2 = new Date(2015,4,25,15,55,55);//alert(someDate2.toLocaleDateString()); //2015年5月25日; 月份是基于0的//alert(someDate2.toLocaleTimeString());    //13:55:55 ;显示时分秒//alert(someDate2.getDate()); //25 ;得到天数//alert(someDate2.getDay()); //返回日期中星期的星期几//alert(someDate2.getFullYear()); //返回4位数的年份

 

转载于:https://www.cnblogs.com/yanyangbyou/p/3955861.html

你可能感兴趣的文章
[转]【NoSQL】NoSQL入门级资料整理(CAP原理、最终一致性)
查看>>
RequireJS进阶(二)
查看>>
我设计的网站的分布式架构
查看>>
linux extract rar files
查看>>
Knockout.Js官网学习(监控属性Observables)
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决
查看>>
azure之MSSQL服务性能测试
查看>>
Android BitmapFactory.Options
查看>>
前端构建:Less入了个门
查看>>
phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合
查看>>
linux 批量进行:解压缩某一类压缩文件类型的文件
查看>>
激活modelsim se 10.4 时运行patch_dll.bat不能生成TXT
查看>>
Node.js中针对中文的查找和替换无效的解决方法
查看>>
如何查看Ubuntu下已安装包版本号
查看>>
VS2017 配置ImageMagick
查看>>
【Leetcode】Search in Rotated Sorted Array
查看>>
tomcat架构分析(valve源码导读)
查看>>
spring中InitializingBean接口使用理解(转)
查看>>
基于php5.5使用PHPMailer-5.2发送邮件
查看>>
InstallShield 2012 Spring新功能试用(16): Suite/Advanced UI 或 Advanced UI安装程序能在安装时进行输入合法性校验与反馈...
查看>>