初级Javascript问题总结-1

初级Javascript:

1.JavaScript是一门什么样的语言,它有哪些特点?
  
  JavaScript 是一种脚本语言,官方名称为 ECMAScript(因定义语言的标准为 ECMA-262)。

  • JS 的主要特点:
      1. 语法类似于常见的高级语言,如 C 和 Java;
      2. 脚本语言,不需要编译就可以由解释器直接运行;
      3. 变量松散定义,属于弱类型语言;
      4. 面向对象的。

2.JavaScript的数据类型都有什么?
  
  基本数据类型:String,boolean,Number,Undefined, Null
  引用数据类型:Object(Array,Date,RegExp,Function)

<script type="text/javascript">
			//基本数据类型:number、string、boolean、null、undefined
			//复杂数据类型(引用数据类型):object(Array、Data、RegExp、function)
			alert(typeof 1);  //number;
			alert(typeof true);  //boolean;
			alert(typeof {});  //object;
			alert(typeof null); //object,  null是一个空对象;
			alert(typeof undefined);  //undefined;
			alert(typeof "hello world")   //string;
			alert(typeof function(){});   //function;
			
			alert(typeof(typeof 1));   //string;
		</script>

3、如何判断某变量是否为数组数据类型?
•方法一.判断其是否具有"数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效

<script type="text/javascript">
			function sum(n1,n2){
				var arr=[];
				arguments;     //函数中有一个隐式的参数arguments,是一个伪数组;
				if(arguments.push !== undefined){    //如果arguments的push方法是undefined(未定义),没有数组的方法,可认为不是数组;   auguments不是数组;
					alert("是数组");
				}else{
					alert("不是数组")
				}            
//				if(arr.push !== undefined){    //arr是数组
//					alert("是数组");
//				}else{
//					alert("不是数组")
//				}
			}
			sum();  //调用函数提示“不是数组”;
		</script>

•方法二.obj instanceof Array 在某些IE版本中不正确

<script type="text/javascript">
			function sum(n1,n2){
				var arr=[];
				arguments;     //函数中有一个隐式的参数arguments,是一个伪数组;
				
  			    //ES5中给出了  instanceof 用于判断一个变量是否某个对象的实例; 有兼容性问题;
				alert(arr instanceof Array);   //判断变量arr是否是数组对象Array的一个实例;是就返回true  表示是数组;
				alert(arguments instanceof Array);   //false表示不是数组;
			}
			sum();  //调用函数
		</script>

•方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 为保证其兼容性,最好的方法如下

<script type="text/javascript">
		    function sum(n1,n2){
		    	var arr1=[];
		    	arguments;
		    	
		    	alert(isArray(arr1));   //在函数中调用封装好的函数isArray(arr);
		    	alert(isArray(arguments)); 
		    }
		    sum();  //调用函数;
		    
			function isArray(arr){  //自己封装的一个函数isArray(),用于判断函数传入的参数是否是数组;
				if(typeof Array.isArray === "undefined"){  //Array.isArray()是ES5中新增的方法,先判断下其是否是undefined,如果是未定义的话执行该段函数,定义一个Array.isArray()方法;
					Array.isArray = function(brr){  //如果未定义,则定义函数并传入参数;
						return Object.prototype.toString.call(brr)=="[object Array]"  //通过js中的Object.prototype.toString方法,返回一个判断,假设参数对象值属于数组内置类型,判断时,如果返回true则是数组,否则不是;
					}
				}
				return Array.isArray(arr);  //返回该方法,调用isArray()相当于调用Array.isArray();
			}
		</script>

发布了26 篇原创文章 · 获赞 3 · 访问量 7925

猜你喜欢

转载自blog.csdn.net/Eva3288/article/details/52777926