day56
作者:互联网
(1)常用内置对象
(2)运算符
(3)流程控制
(4)函数的基本使用
(5)函数的作用域
https://www.cnblogs.com/linhaifeng/articles/9346128.html
常用内置对象 数组对象 关于sort()需要注意: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。 var arr = [123,9,1211,11] arr.sort() #[11, 1211, 123, 9] 如果想按照其他标准进行排序,就需要提供比较函数,该函数应该具有两个参数 a 和 b,接收传入的a和b,执行函数体代码,然后返回一个值用于说明a和b的大小 返回值 < 0 :代表a小于b 返回值 =0 : 代表a等于b 返回值 > 0 :代表a大于b 示例: function sortNumber(a,b){ return a - b } var arr = [123,9,1211,11] arr.sort(sortNumber) #[9, 11, 123, 1211] 关于遍历数组中的元素,可以使用下面的方式: var arr = [11, 22, 33, 44]; for (var i=0;i<arr.length;i++) { console.log(i); } splice() 语法: splice(index,howmany,item1,.....,itemX) splice(从第几个索引开始删除,删除多少个元素,要添加的内容) var arr=['aa','bb','cc','dd','ee'] arr.splice(1,3,'xxxx') # 删除‘bb’,‘cc’,’dd‘这三个值,然后插入’xxxx‘ arr #["aa", "xxxx", "ee"] forEach() var arr=['aa','bb','cc','dd','ee'] arr.forEach(function(v,i,arr){ console.log(v,i,arr); console.log(this[0]); },"hello") map() forEach vs map: 1、forEach()返回值是undefined,不可以链式调用。 var res=arr.forEach(function(v,i,arr){ console.log(v,i,arr); console.log(this[0]); return 123; },"hello") res # undefined 2、map()返回一个新数组,原数组不会改变 var res=arr.map(function(v,i,arr){ v=v + 'SB' return v; },"hello") res #["aaSB", "bbSB", "ccSB", "ddSB", "eeSB"] 在使用forEach()时候,如果数组在迭代的视乎被修改,则其他元素会被跳过 var arr=[11,22,33,44,55] arr.forEach(function(v){ console.log(v); if (v === 33){ arr.shift() // 下一次循环应该循环出第索引为3的元素,但此时一旦删除第一个元素,那么值55的索引变成了3 } }) 11 22 33 55 反转字符串 var str = '12345'; Array.prototype.map.call(str, function(x) { //同时利用了call()方法 return x; }).reverse().join(''); 时间对象 创建日期对象只有构造函数一种方式,使用new关键字 //方法1:不指定参数 var d1 = new Date(); console.log(d1.toLocaleString()); //方法2:参数为日期字符串 var d2 = new Date("2018/01/27 11:12:13"); console.log(d2.toLocaleString()); var d3 = new Date("01/27/18 11:12:13"); // 月/日/年 时分秒 console.log(d3.toLocaleString()); //方法3:参数为毫秒数 var d4 = new Date(7000); console.log(d4.toLocaleString()); console.log(d4.toUTCString()); //方法4:参数为:年,月,日,时,分,秒,毫秒 var d5 = new Date(2018,1,27,11,12,13,700); console.log(d5.toLocaleString()); //毫秒并不直接显示 math对象 json对象 # JSON格式的字符串转成对象 var str1='{"name":"egon","age":18}'; var obj1=JSON.parse(str1); console.log(obj1.name); console.log(obj1["name"]); # 对象转成JSON字符串 var obj2={"name":"egon","age":18}; var str2=JSON.stringify(obj2); 正则对象 #1. 创建正则对象的方式1 // 参数1 正则表达式 // 参数2 匹配模式:常用g(全局匹配;找到所有匹配,而不是在第一个匹配后停止)和i(忽略大小写) // 注意:正则放到引号内,{}内的逗号后面不要加空格 var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); // 匹配用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。 reg1.test("egon_123") // true #2. 创建正则对象的方式2 var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/; // 不要加引号 reg2.test("egon_123") // true #3. String对象与正则结合的4个方法 var s1="hello world"; s1.match(/l/g) // 符合正则的内容["l", "l", "l"] s1.search(/h/g) // 符合正则的内容的索引0 s1.split(/ /) // ["hello", "world"] s1.replace(/l/g,'L') // "heLLo worLd" #4. 匹配模式g与i var s2="name:Egon age:18" s2.replace(/e/,"赢") // "nam赢:Egon age:18" s2.replace(/e/g,"赢") // "nam赢:Egon ag赢:18" s2.replace(/e/gi,"赢") //"nam赢:赢gon ag赢:18" #5. 注意1: // 1、如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找。 // 2、该属性值默认为0,所以第一次仍然是从字符串的开头查找。 // 3、当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。 // 4、当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。 // 5、因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。 // 6、如果test()函数再也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为 0。 var reg3 = /egon/g; reg3.lastIndex 0 reg3.test("egon") // true,匹配成功 true reg3.lastIndex // 匹配成功reg3.lasIndex=4 4 reg3.test("egon") // 从4的位置开始匹配,本次匹配失败 false reg3.lastIndex // 匹配失败,lastIndex归为0 0 reg3.test("egon") // 再次匹配成功 true #6. 注意2: 当我们不加参数调用RegExpObj.test()方法时, 相当于执行RegExpObj.test("undefined"), 并且/undefined/.test()默认返回true。 var reg4 = /^undefined$/; reg4.test(); // 返回true reg4.test(undefined); // 返回true reg4.test("undefined"); // 返回true 运算符 流程控制 // var d=new Date() // if (d.getDay() == 0) { // alert("今天是星期天") // } else if (d.getDay() == 6){ // alert("今天是星期六") // } else { // alert("老老实实工作吧") // } // var x=999 // switch (x) { // case 0: // console.log("星期天,出去浪") // break // case 6: // console.log("星期六,也出去浪") // break // default: // console.log('老老实实工作吧') // } // for (var i=0;i<=5;i++) { // console.log(i) // } // var arr=[111,222,333,444,555] // arr.forEach(function (item) { // console.log(item) // }) // for (var i=0;i<arr.length;i++) { // console.log(arr[i]) // } // var count=0 // while (count < 5) { // if (count == 3) { // // break // count++ // continue // } // console.log(count) // count++ // } // 10>3?"ok":"no" // 10<3?"ok":"no" function f() { y=3 } console.log(y) 函数的基本使用 function f1() { console.log("无参函数") } function f2(a,b) { console.log("有参函数",a+b) } function f3() { // 只能返回一个值,如果想返回多个,必须放到数组内 return [111,222,333] } var f=function (a,b) { console.log(a+b) } f() (function (a,b) { console.log(a+b) })(1,2) var x=11 function test() { var x=22 y=3333 if (true) { var z=444 } } test() console.log('====>',x) // 默认情况下if的子代码块的作用域是与if所在的位置保持一致的 // 因为if属于全局,m也是属于全局的 if (true) {var m=666} // let声明的变量只属于自己的{} if (true) {let n=666} 函数的作用域 首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。另外函数的作用域关系是在定义阶段就固定死的,与调用位置无关 例1: var city = "BeiJing"; function f() { var city = "ShangHai"; function inner(){ var city = "ShenZhen"; console.log(city); } inner(); } f(); //输出结果是? 例2 var city = "BeiJing"; function Bar() { console.log(city); } function f() { var city = "ShangHai"; return Bar; } var ret = f(); ret(); // 打印结果是? 例3 var city = "BeiJing"; function f(){ var city = "ShangHai"; function inner(){ console.log(city); } return inner; } var res = f(); res();
标签:function,city,arr,函数,11,var,day56 来源: https://www.cnblogs.com/bronya/p/13771004.html