JavaScipt是一门单线程的语言。
解释:因为用于页面交互和操作DOM,多线程会导致各种同步错误。为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。
1 | null instanceof Object; |
表单的JS选择:
1 | window.onload = function(){ |
1 | var datas=[10,20,30]; |
输出的结果应该是:50,10,20,60,70;
解释:unshift和push如果携带多个参数,属于在头和尾合并这样一个数组,而非按顺序执行。
Array.sort()的比较函数的意义是:
compareFunction(a, b):
- return<0, a排列在b之前;
- return=0, 相对位置不变;
- return>0, a排列在b之后;
所以如果要数字升序,可以使用a-b作为比较函数;降序,则使用b-a;
1 | var numbers = [4, 2, 5, 1, 3]; |
JavaScript正则表达式内容:
以下代码的执行后,str 的值是:
1 | var str = "Hellllo world"; |
String.prototype.replace
其中$1意为第1个括号选取的字符串,也就是l;
正则表达式语法中,
\1也意为第1个括号选取的字符串,也就是l;
而/…/g,即全局标签g,会进行全局匹配,也就是多次选取。
因此实际上的过程是:正则表达式全局选取”ll”,选中了两个”ll”,然后分别替换为”l”;最终的结果就是”Hello world”。
Date.now()返回的是一个毫秒数,也就是Number。而new Date({Number})可以根据时间戳创建一个Date对象。
JavaScript内部对象:
- History 包含用户(在浏览器窗口中)访问过的 URL
- Location 包含有关当前 URL 的信息
- Window 表示浏览器中打开的窗口
- Navigator 包含有关浏览器的信息
以下代码执行后,控制台的输出是:
1 | var a = 10; |
函数提升大于变量提升,变量提升会提升到除函数声明的后面,这个过程等价于:
1 | function a(){} |
所以结果是”Number”
关于this对象:
- 在不改变this指向的前提下,this总是指向函数的直接调用者。
- 如果有new关键字,this指向new出来的那个对象。
- IE中attachEvent中的this总是指向全局对象Window。
下列函数哪些是JavaScript的全局函数?
正确:encodeURI, parseFloat, eval
错误:setTimeOut
因为setTimeOut是window的函数。
parseInt的转换方式:
1、如果都是字母, 返回:NaN
parseInt(“abc”, 10) //返回 NaN
2、如果都是数字,则返回整数
parseInt(“123”, 10) //返回 123
3、如果字母和数字都存在
(1)、以数字开头,则取截止到第一个字母出现之前的所有数字进行转换
parseInt(“12x2bc”, 10) // 返回:12
(2)、如果参数“string”,以字母开头,直接返回NaN (10进制中字母不是一个有效的的表示)
parseInt(“df2bc”, 10) //返回 NaN