javascript的遇到的常见问题

js中的几种数据类型,是哪几种? 

1 number  数字类型
2 string  字符串类型
3 Boolean  布尔类型
4 undefined  变量未初始化
5 null  变量取值为null的时候
6 object  对象
7 Array  数组 

 

在页面中传参时,经常遇到undifined类型和null类型?

var s1;//当定义了变量,但是没有给变量赋值,那么该值的数据类型就是undefined类型。
var s1 = null;//表示变量值为空,该变量在内存中是不存在的。真正的空。这时s1的数据类型变为object。
nullundefined有最大的相似性。看看null == undefined的结果(true)也就更加能说明这点。但是null ===undefined的结果(false)。不过相似归相似,还是有区别的,就是和数字运算时,10 + null结果为:1010 + undefined结果为:NaN
任何数据类型和undefined运算都是NaN;任何值和null运算,null可看做0运算。

 

关于常用的Date对象的常用方法?

var date = new Date();
console.log(date.getFullYear());//返回当前年份
console.log(date.getMonth()+1);//返回当前月份
console.log(date.getDate());//返回当前日
console.log(date.getHours());//返回当前小时
console.log(date.getMinutes());//返回当前分钟
console.log(date.getSeconds());//返回当前秒数
console.log(date.getTime());//返回1970/01/01至今的毫秒数

 

关于Math对象的常用方法? 

var n = 3.2;var m = 3.3;
console.log(Math.ceil(n));//向上取整
console.log(Math.floor(n));//向下取整
console.log(Math.max(n,m));//返回两个数中的最大值
console.log(Math.min(n,m));//返回两个数中的最小值
console.log(Math.pow(2,3));//返回2的3次方
console.log(Math.round(n));//四舍五入
console.log(Math.random());//0-1之间的随机数 

 

关于数据类型转换?

var n = 1;
console.log(typeof(String(n)));//数字类型转字符串
console.log(typeof(n.toString()));//数字类型转字符串
var str = "1.1";var noStr = "abc";
console.log(typeof(Number(str)));//字符串类型转数字类型
console.log(typeof(parseInt(str)));//字符串类型转数字类型,如果是小数,保留整数部分
console.log(typeof(parseFloat(str)));//字符串类型转数字类型.
console.log(Number(noStr));//非数字字符串,转换之后得到是NaN。
var flag = 'abc';
console.log(Boolean(flag));//数字和字符串转完之后为true;
console.log(Boolean(0));//undefined、null、0转完之后为false.

 

关于等号预算符?

“=”赋值运算符
“==”只判断内容是否相同,不判断数据类型。
“===”不仅判断内容,还判断数据类型是否相同。
!=  只判断内容是否不相同,不判断数据类型。
!==不全等于  不仅判断内容是否不相同,还判断数据类型是否不相同。

 

 关于数组Array的使用?

var arr = new Array();//定义数组
var arr1 = [3,4];    //定义数组并初始化
arr[0]=1;//通过下标数组赋值
arr.push(2);//通过入栈赋值
console.log(arr.length);//直接获取数组的长度
console.log(arr.concat(arr1));//arr和arr1合并
console.log(arr.join(","));//返回一个字符串数组

 关于输出NaN和Infinity或-Infinity?

NaN为Not a number的简写,指结果不是数字。NaN与Infinity都是Number类型的一种特殊格式,当输出结果非数字时,为NaN,例如console.log("abc"/3)。Infinity指的是无穷,例如0为除数时,则会出现Infinity。js中预定义了一个全局方法isNaN()来判断元素是不是非数字(not a number).例如isNaN(NaN)结果为true,isNaN("abc")结果为true,isNaN(123)结果为false.

 

关于函数的返回值问题?

函数程序运行后的结果外部需要使用的时候,我们不能直接给与,需要通过return返回。
总结:函数内部,return后面的值就是返回值;
作用:函数执行后剩下结果就是返回值。
函数执行完毕,会不会留下点儿什么,取决于有没有返回值
var  temp   =    函数名()   =  (功能)+ 该函数的返回值;
1. 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
2. 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
3. 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
4. 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。

 

关于隐式全局变量的问题?

隐式全局变量就是隐藏的全局变量不好被发现。
function fn(){
  var a = b = c = 1;   // b和c就是隐式全局变量
}
注意:
function fn(){
  var a = b = c = 1;   // b和c就是隐式全局变量(等号)
  var a = 1;b = 2;c = 3;     // b和c就是隐式全局变量(分号)
  var a = 1,b = 2,c = 3;    // b和c就不是隐式全局变量(逗号)
}

 

关于for...in的用法?

Var json = {"aaa": 1,"bbb": 2,"ccc": 3,"ddd": 4}
for(var key in json){
  //key代表aaa,bbb.....等
  //json[key]代表1,2,3....等
}

 

匿名函数的使用?

function fn(){
  //方法  
}
fn();//调用方法
//实质上相当于
(function(){//方法})();//第一个小括号里面的是定义的函数,后面加个括号是相当于调用。

 

回调函数的使用?

    function test(callback){
        callback();
    }
    //需要回调的函数
    function callbackFn(){
        alert(1);
    }
    test(callbackFn);//将需要回调的函数名传入

//什么情况下,使用回调函数?
//回调函数一般用户定义规则。例如传入三个参数,前两个是基本数据类型,第三个是函数名,需要将前两个参数按照函数的规则进行运算。

 

 

posted @ 2019-01-14 16:00  三笠丶阿克曼  阅读(361)  评论(0编辑  收藏  举报