前端进阶试题-JavaScript基础篇

接前段进阶试题-CSS篇

parseInt 与 parseFloat 的区别?

parseInt将值转换为整数,parseFloat则把值转换为浮点数。
parseInt将从位置0开始遍历字符串至第一个无效字符处停止遍历,返回结果。如parseInt(‘1234b’)将返回1234,检测到b的时候就会停止检测。对于parseInt函数来说小数点也是无效字符。因此传入’22.5’将会返回22。parseInt可以正确检测到字符串中包含的数字字面量。parseInt函数还可以传入第二个参数以指定进制。例如parseInt(‘10’, 10)将返回10,而parseInt(‘10’, 8)将返回8。
值得一提的是,使用parseInt函数转换带有前导0的字符串,应当指定进制。如不指定,会默认返回8进制的值。

parseFloat函数与parseInt函数的相似之处在于都是从位置0开始遍历字符串,但是第一个出现的小数点对parseFloat函数来说是有效字符。当小数点出现二次及以上时,从第二次开始视为无效字符,会返回第二个小数点之前字符的转换结果。
parseFloat函数返回值必然为十进制,因此也无法传入第二个参数以指定进制。字符串的前导0会被忽略。parseFloat函数无法正确检测字符串中的数字字面量。parseFloat(‘0xA’)将会返回NaN。

valueOf 与 toString 的区别?

valueOf偏向于运算,toString偏向于显示。
valueOf方法在有运算(操作符)时优先调用,而将对象用于字符串环境时将自动调用toString方法。进行对象转换时优先调用toString方法。强制转换为字符串类型时优先调用toString方法,强制转换为数字类型时优先调用valueOf方法。

全等与相等?

相等(==)只需两者值相等即为true,而全等还需要判断两者的类型是否相同。

break 与 continue 的区别?
break:中断当前循环迭代并跳出循环,继续执行该循环之后的代码。通过标签引用,break可以用于任何代码块中。

continue:中断当前循环迭代,进入下一个迭代。continue只能用于循环中。

js的作用域?

全局作用域:在最外层函数或最外层函数中声明的变量,以及所有未声明直接赋值的变量,还有window对象的属性拥有全局作用域。

局部作用域:由于最常见于函数内部声明的函数和变量,又被称为函数作用域,一般只在固定代码片段内可以访问到。

Array 的 slice 与 splice 的区别?

slice:不修改原数组,返回一个子数组,传入的参数为开始和结束的位置。如不传参数则返回原数组的一个副本,如只传入一个参数则默认为开始位置,结束位置默认为数组尾部。开始位置如传入负数,则开始位置从数组尾部开始计数。

splice:从数组中取出指定的元素并返回。修改原数组。传入的参数为要取出元素的开始位置、取出元素的个数、插入的新元素。如不传入参数,则返回空。如只传入一个参数,必须为数字类型或可强制转换为数字类型的值,表示开始位置,取出元素的个数默认为该位置后全部元素。如传入两个及以上的参数,则第二个必须为数字类型或可强制转换为数字类型的值,表示取出元素的个数。从第三个参数起表示用以插入数组的元素。

正则中test 与 match 的区别?

test:调用test方法的对象必须为RegExp类型,否则将报object.test is not a function错误。调用test方法时应传入一个字符串类型的参数。test方法返回一个布尔值,如果字符串中包含与RegExpObject匹配的文本则返回true,否则返回false。

match:调用match方法的对象必须为String类型,否则将报object.match is not a function错误。调用match方法时应传入一个参数,当传入的参数不是RegExp类型时,match方法会将参数传入RegExp对象的构造函数,将其转换为RegExp对象。match方法返回一个包含匹配结果的数组。

如何在JS中创建一个对象并继承他?

方法1:

function a(c, d, e) {
    var f = new Object;
    f.c = c;
    f.d = d;
    f.e = e;
    f.s = function () {
        alert(this.c)
    };
   return f;
}
var c1= a("red", "dd", 23);

方法2:

function Aa(str){
This.ab = str;
}
Aa.prototype.cc = "b"
Aa.prototype.dw = function(){
alert(this.cc);
}
var a = new Aa("vv");

什么是prototype ? 什么是原型链?

JavaScript中的每个对象被创建时都会自动获得prototype属性。prototype属性是一个指向原型对象的引用。原型对象的constructor属性即为对象的构造函数。
这样当调用构建函数创建一个新的实例时,新的对象实例将自动获得一个proto属性,指向构造函数的prototype,可以访问到构造函数的prototype中定义的属性和方法。这样就完成了对象的继承。

而原型对象本身也是对象,也有本身的原型对象,而原型对象的原型对象也是对象,也有本身的原型对象……直到最高级的Object.prototype为止。这就是原型链。

setTimeout 与 setInterval 的区别?

setTimeout:定时器,在经过指定的毫秒数之后执行指定的代码。只执行一次。可以用clearTimeout方法清除。

setInterval:定时器,按照指定的毫秒数周期性地执行,直到clearInterval方法被调用或窗口被关闭。

cssText?

元素的style属性的cssText属性即为元素的内联CSS样式表文本。

offsetWidth, scrollLeft, scrollHeight?

offsetWidth:元素的绝对宽度,不包括因为overflow而未显示的部分,也就是元素实际占据的宽度,整数,单位是像素。

scrollLeft:如果元素可以滚动,可以通过scrollLeft获得元素在水平方向滚动的距离,整数,单位是像素。

scrollHeight:内部元素的绝对高度,包含内部元素因overflow而隐藏的部分。

IE的事件与w3c事件的区别?

W3C事件:

object.addEventListener(event, function, isCapturingAvailable);

通过改变第三个参数的值(Boolean),W3C事件可以支持捕获、冒泡两种触发方式。function函数的第一个参数无论是否显式调用,都永远是Event对象的引用。function内部的this永远指向绑定该事件的DOM对象。

IE事件:

object.attachEvent(onevent, function);

只支持冒泡方式不支持捕获方式触发事件。要得到Event对象必须通过window.event方式获取。function内部的this指向window对象。只可用于IE浏览器。

转载于:https://www.cnblogs.com/Emily36107/p/5269183.html

你可能感兴趣的:(前端进阶试题-JavaScript基础篇)