javascript的typeof返回哪些数据类型
typeof undefined
‘undefined’
typeof null
‘object’
typeof true
‘boolean’
typeof 123
‘number’
typeof “abc”
‘string’
typeof function() {}
‘function’
typeof {}
‘object’
typeof [ ]
‘object’
typeof NAN
‘number’
例举3种强制类型转换和2种隐式类型转换?
强制: parseInt(), parseFloat(), Number(), Boolean(), String()
隐式: +, -
// 1.parseInt() 把值转换成整数
parseInt(“1234blue”); // 1234
parseInt(“0xA”); // 10
parseInt(“22.5”); // 22
parseInt(“blue”); // NaN
parseInt(“AF”, 16); // 175
parseInt(“10”, 2); // 2
parseInt(“10”, 8); // 8
parseInt(“10”, 10); // 10
// 2.parseFloat() 把值转换成浮点数,没有基模式
parseFloat(“1234blue”); // 1234.0
parseFloat(“0xA”); // NaN
parseFloat(“22.5”); // 22.5
parseFloat(“22.34.5”); // 22.34
parseFloat(“0908”); // 908
parseFloat(“blue”); // NaN
// 3.Number() 把给定的值转换成数字(可以是整数或浮点数),Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。示例如下:
Number(false) // 0
Number(true) // 1
Number(undefined) // NaN
Number(null) // 0
Number(“5.5”) // 5.5
Number(“56”) // 56
Number(“5.6.7”) // NaN
Number(new Object()) // NaN
Number(100) // 100
// 4.Boolean() 把给定的值转换成Boolean型
Boolean(""); // false
Boolean(“hi”); // true
Boolean(100); // true
Boolean(null); // false
Boolean(0); // false
Boolean(new Object()); // true
// 5.String() 把给定的值转换成字符串
String(123) // “123”
// 6. + -
console.log(0 + ‘1’) // “01”
console.log(2 - ‘1’) // 1
split() join() 的区别
split()
方法用于把一个字符串分割成字符串数组
join()
定义:将数组中所有的元素都转化为字符串拼接在一起,返回最后生成的字符串
var a = [1,2,3];
console.log(a.join()); //1,2,3 默认使用逗号分隔
console.log(a.join("")); //123 转化为字符串的常用方法
console.log(a.join("-")); //1-2-3 自定义分隔符
console.log(a); //[1,2,3] 不修改原素组
var b = new Array(5);
console.log(b.join('*')); //**** 4个连字号组成字符串
Join 函数获取一批字符串,然后用分隔符字符串将它们联接起来,从而返回一个字符串。Split 函数获取一个字符串,然后在分隔符处将其断开,从而返回一批字符串。但是,这两个函数之间的主要区别在于 Join 可以使用任何分隔符字符串将多个字符串连接起来,而 Split 只能使用一个字符分隔符将字符串断开。
简单地说,如果你用split,是把一串字符(根据某个分隔符)分成若干个元素存放在一个数组里。而Join是把数组中的字符串连成一个长串,可以大体上认为是split的逆操作。
数组方法pop() push() unshift() shift()
push在数组的末尾添加一个或者多个元素,返回新数组的长度
pop删除数组的最后一个元素,返回它删除的值元素
unshift是在数组头部添加一个或多个元素。如果一次性传入多个参数,多个参数按照原先的位置直接加到数组中。返回新数组的长度
shift:删除数组的第一个元素,并返回删除的元素
//push尾部追加
var a = [1,2,3];
var b = a.push(4,5);
console.log(b); //5 返回的是新数组的长度。
console.log(a); //[1,2,3,4,5] 直接原数组尾部添加4
//pop尾部删除
var a = [1,2,3];
var b = a.pop();
console.log(b); //3 返回的删除的元素。
console.log(a); //[1,2] 直接在原数组上删除元素3
//unshift头部追加
var a=[1,2,3]
var b=a.unshift(1)
console.log(b) //5 返回的是新数组的长度
//shift头部删除
var a = [1, 2, 3, 4]
var b = a.shift()
console.log(b); //1 返回的是删除的元素
console.log(a); //[2,3,4]
事件绑定和普通事件有什么区别
普通事件
通过 on 来添加事件的方式
<button id="btn">按钮</button>
document.getElementById('btn').onclick=function(){};
document.getElementById('btn').onclick=function(){};
如果说给同一个元素绑定了两次或者多次相同类型的事件,那么后面的绑定会覆盖前面 的绑定
事件绑定
通过指定的方法来添加事件的方式
addEventListener()
addEventListener("click", function(){}, true); // 此时的事件就是在事件冒泡阶段执行
事件绑定是指把事件注册到具体的元素之上,普通事件指的是可以用来注册的事件
call和apply的区别
call方法:
语法:call(thisObj,Object)
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
apply方法:
语法:apply(thisObj,[argArray])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
用js实现随机选取10–100之间的10个数字,存入一个数组,并排序
var arr= [];
function oRandom(istart,iend){
var num = Math.floor(Math.random()*(iend-istart)+istart);
return num;
}
for(let i=0;i<10;i++){
var num2 = oRandom(10,100);
arr.push(num2)
}
arr.sort(a-b);
JavaScript的数据类型都有什么?
JS数据类型有7种,分别是:
3种基本类型(数字,字符串,布尔)
2种引用数据类型(对象,数组)
以及2种特殊数据类型(undefined,null)
编写一个数组去重的方法
方法一:
var arr = [0,2,3,4,4,0,2];
var obj = {};
var tmp = [];
for(var i = 0 ;i< arr.length;i++){
if( !obj[arr[i]] ){
obj[arr[i]] = 1;
tmp.push(arr[i]);
}
}
console.log(tmp);
结果如下: [0, 2, 3, 4]
方法二:
var arr = [2,3,4,4,5,2,3,6],
arr2 = [];
for(var i = 0;i< arr.length;i++){
if(arr2.indexOf(arr[i]) < 0){
arr2.push(arr[i]);
}
}
console.log(arr2);
结果为:[2, 3, 4, 5, 6]
方法三:
var arr = [2,3,4,4,5,2,3,6];
var arr2 = arr.filter(function(element,index,self){
return self.indexOf(element) === index;
});
console.log(arr2);
结果为:[2, 3, 4, 5, 6]
如何阻止事件冒泡和默认事件
// 阻止事件冒泡
function stopBubble(e) {
if(e && e.stopPropagation){
e.stopPropagation();
} else {
window.event.cancelBubble = true;
}
};
// 阻止浏览器的默认事件
function stopDefault(e){
if(e && e.preventDefault) {
e.preventDefault();
} else {
window.event.returnValue = false;
}
return false;
};