JavaScript知识点(一)

来源:互联网 发布:finalcut windows 编辑:程序博客网 时间:2024/06/04 17:44

[本文非原创,转载自以下文章:]
(http://www.cnblogs.com/coco1s/p/4029708.html)

1、javaScript的数据类型
基本数据类型:String、Number、null、undefined、boolean
引用数据类型:object(Array、Date、RegExp、Function)
如何判断某变量是否为数组数据类型
if(typeof Array.isArray===”undefined”){
Array.isArray = function(arg){
return Object.prototype.toString.call(arg)===”[object Array]”
};
}
2、已知ID的input输入框,希望获取这个输入框的输入值,怎么做?
document.getElementById(“ID”).value
3、希望获取到页面中所有的checkbox怎么做
var domList = document.getElementsByTagName(‘input’)
var checkBoxList = [];
var len = domList.length;
while(len–){
if(domList[len].type == ‘checkbox’){
checkBoxList.push(domList[len]);
}
}
4、设置一个已知ID的DIV的HTML内容为XXX,字体颜色为黑色
var div = document.getElementByID(‘ID’);
div.innerHtml=”XXX”;
div.style.color=”#000”;
5、当一个DOM节点被点击时,希望执行一个函数
直接在DOM里绑定时间:


在JS里通过onclick绑定:
xxx.onclick = test
通过事件添加进行绑定:addEventListener(xxx,’click’,test)
6、JavaScript的时间流模型都有什么
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点先接受,然后逐级向下,一直到最具体的
“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
7、什么是Ajax和JSON,它们的优缺点
Ajax:异步JavaScript和XML,用于在Web页面中实现异步数据交互
优点:
可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量
避免用户不断刷新或者跳转页面,提高用户体验
缺点:
对搜索引擎不友好
要实现ajax下的前后腿功能成本较大
可能造成请求书的增加
跨域问题限制
JSON:一种轻量级的数据交换格式,ECMA的一个子集
优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持符合数据类型(数组、对象、字符串、数字)
8、看下列代码输出为何?
var a;
alert(typeof a);//undefined
alert(b)//报错
解释:undefined是一个只有一个值的数据类型,这个值就是undefined,在使用var声明变量但未对其进行赋值初始化时,改值就是undefined。而b由于未声明,所以将报错。
在此要注意未声明的变量和生命了未赋值的是不一样的;
9、看下列代码,输出什么
var a=null;
alert(typeof a);//object
解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回“object”
10、看下列代码输出什么?
var undefined;
undefined == null;//true
1 == true;//true
2 == true;//false
0 == false;//true
0 == ”;//true
NaN == NaN;//false
[] = false;//true
[] == ![];//true
解释:
undefined与null相等,但不恒等(===)
一个是number一个是string时,会尝试将string转换为number
尝试将Boolean转换为number,0或1
尝试将Object转换成number或string,取决于另外一个对比量的类型
所以,对于0、空字符串的判断,建议使用“===”。“===”会先判断两边的值类型,类型不匹配时为false。
看下面的代码,foo的类型是什么
var foo = “11”+2-“1”;
console.log(foo);
console.log(typeof foo);
执行完后foo的值为111,类型为number,“11”+2执行完为字符串类型的“112”,再执行“112”-“1”,会将string类型的“112”转换成number112再执行减1操作,所以结果为number类型的111.
var foo = “11”+2+”1”;
console.log(foo);
console.log(typeof foo);
执行完后foo的值为“1121”,类型为string
11、看代码给答案
var a = new Object();
a.value = 1;
b = a;
b.value = 2;
alert(a.value);
执行结果为2
12、已知数组var stringArray = [“This”,”is”,”Baidu”,”Campus”],Aert出“This is Baidu Campus”
答案:alert(stringArray.join(” “);
问题,已知有字符串foo=“get-element-by-id”,写一个function将其转化成驼峰表示法“getElementById”。
function combo(msg){
var arr = msg.split(“-“);
var len = arr.length;
for(var i = 1; i < len; i++){
arr[[i] = arr[i].cahrAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);
}
msg=arr.join(“”);
return msg;
}
13、var numberArray=[3,6,2,1,5];
(1)实现对该数组的倒序,输出[5,41,4,2,6,3]
(2)实现对该数组的降序输出,输出[6,5,4,3,2,1]
var numberArray = [3,6,2,4,1,5];
numberArray.reverse();//倒序
numerArray.sort(function(a,b){
return b-a;
})//降序
14、以YYYY-MM-DD的方式输出今天的日期
var d = new Date();
//获取年,getFullYear()返回4位的数字
var year = d.getFullYear();
//获取月,月份是从0-11,所以需要执行+1,返回1位或两位数字
var month = d.getFullMonth()+1;
//变成两位
month = month < 10 ? “0” + month:month;
//获取日
var day = d.getDate();
//变成两位
day = day < 10 ? “0”+day:day;
alert(year + “-” + month + “-” + day);
15、将字符串“{id}{name}”中的{id}替换成10,{name}替换成Tony(使用正则表达式)
“{id}{id}_{$name}“.replace(/\$id}/g,’10’).replace(/{\$name}/g,’Tony’);