zoukankan      html  css  js  c++  java
  • 随记

    1、最简单的死循环
    	for(;;){}
    2、 var arr = [33,5,8,5,2,6]
    	for(i in arr){
    		alert(i)    // 下标   0 1 2 3 4 5
    		alert(arr[i]) // 值  33 5 8 5 2 6
    	}
    3、break
    	单独使用break语句的作用是立即退出最内层的循环或switch语句。
    	JS中同样允许break关键字后面跟随一个语句标签(只有标识符,没有冒号)。程序将跳转到这个标签所标识的语句块的结束。
    	break labelname;
    4、continue语句和break语句类似。
    	在不同类型的循环中,continue的行为也有所区别:
    		在while循环中,在循环开始处指定的expression会重复检测,如果检测结果为true,循环体会从头开始执行;
    		在do/while循环中,程序的执行直接跳到循环结尾处,这时会重新判断循环条件,之后才会继续下一次循环;
    		在for循环中,首先计算自增表达式,然后再次检测test表达式,泳衣判断是否执行循环体。
    		在for/in循环中,循环开始遍历下一个属性名,这个属性名赋给了指定的变量。
    5、数组直接量的语法允许有可选的结尾的逗号
    	[,,]只有两个元素而非三个
    6、数组的索引是基于零的32位数值
    	0 ~ (2^32-2)
    7、可以使用负数或非整数来索引数组,这种情况下,数值转换为字符串,字符串作为属性名来用,而非数组的索引。
    如果使用了非负整数的字符串,它就当做数组索引,而非对象属性。
    8、Object.prototype.toString.call(obj)返回对象的数据类型
    	格式为 "[object Array]"  字符串类型
    	通过 .slice(8,-1) 截取字符串得到数据类型。
    
    9、数组创建方式
    	var a1 = [,,,] 		数组是[undefined,undefined,undefined]
    	var a2 = [undefined];
    	var a3 = new Array(3)	数组根本没有元素
    	alert(0 in a1); 	false
    	alert(0 in a2);		true
    	alert(0 in a3);		false
    10、数组的length属性
    	arr.length = 0 会改变原数组
    	可以用Object.defineProperty()让数组的length属性变成只读属性
    		var a = [1,2,3]
    		Object.defineProperty(a, 'length', {writable: false})
    		a.length = 0   a不会改变
    11、可以像删除对象属性一样使用delete运算符来删除数组元素
    	var a = [1,2,3]
    	delete a[1]
    	// a[1] = null
    	alert(a) 	// 1,,3
    	alert(a.length) // delete操作并不影响数组长度
    	alert(1 in a) //false, 数组索引1并未在数组中定义
    
    12、数组遍历优化
    	for(var i=0;i<arr.length;i++){}
    	for(var i=0, len=arr.length;i<len;i++){}
    
    	当数组可能是稀疏数组时,使用数组元素之前应该先检测它们,
    		若想排除null, undefined和不存在的元素
    			for(var i=0;i<arr.length;i++){
    				if(!arr[i]) continue;  // 跳过null, undefined和不存在的元素
    			}
    		若只想跳过undefined和不存在的元素
    			for(var i=0;i<arr.length;i++){
    				if(arr[i] === undefined) continue;  // 跳过undefined和不存在的元素
    			}
    		若只想跳过不存在的元素而仍然要处理存在的undefined元素
    			for(var i=0;i<arr.length;i++){
    				if(!(i in arr)) continue;  // 跳过undefined和不存在的元素
    			}
    
    13、ECMA5定义了一些遍历数组元素的新方法,按照索引的顺序传递给定义的函数,如  forEach()方法
    	var data = [1,2,3,4,5]
    	data.forEach(function(x){
    		......
    	})
    
    14、排列字符串数组
    	a = ['ant', 'Bug', 'cat', 'Dog'];
    	a.sort(); 		//区分大小写的排序:['Bug', 'Dog', 'ant', 'ant', ]
    	a.sort(function(s,t){ 	// 不区分大小写的排序:ant,Bug,cat,Dog
    		var a = s.toLowerCase();
    		var b = t.toLowerCase();
    		if(a < b) return -1;
    		if(a > b) return 1;
    	})
    
    15、数组操作concat()
    	var a = [1,2,3]
    	a.concat(4,[5,[6,7]]) // [1, 2, 3, 4, 5, [6,7]]
    
    16、toString()
    	针对数组,该方法将其每个元素转化为字符串(如有必要将调用元素的toString()方法),并且输出用逗号分隔的字符串系列。注意,输出不包括方括号或其他任何形式的包裹数组值的分隔符。与不加任何参数的.join()方法类似;
    	[1,2,3].toString() 		生成'1,2,3'
    	['a','b','c'].toString() 生成'a,b,c'
    	[1,[2,'c']].toString() 	生成'1,2,c'
    

      

    author:Lik
    Endeavoring to powerless, struggling to move yourself.
  • 相关阅读:
    _ 下划线 Underscores __init__
    Page not found (404) 不被Django的exception中间件捕捉 中间件
    从装修儿童房时的门锁说起
    欧拉定理 费马小定理的推广
    线性运算 非线性运算
    Optimistic concurrency control 死锁 悲观锁 乐观锁 自旋锁
    Avoiding Full Table Scans
    批量的单向的ssh 认证
    批量的单向的ssh 认证
    Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
  • 原文地址:https://www.cnblogs.com/likwin/p/7134502.html
Copyright © 2011-2022 走看看