初级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>