1.以下不属于JavaScript中的数据类型的选项是( C )
A.Undefined B.Number C.Interface D.Symbol
== 基本类型有:String Number Boolean Null Undefined Symbol(ES6新增-表示独一无二的值) 引用数据类型:Object Array Function ==
2.以下代码执行后,console 的输出是( A )
function Foo(){
console.log(this.location);
}
Foo();
A.当前窗口的 Location 对象 B.undefined C.null D.TypeError
3.打开名为 “window2” 的新窗口的 JavaScript 语法是()
window.open("http://www.w3school.com.cn","window2")
4.JavaScript中常用符号的含义
== * :出现零到多次
+: 出现一到多次
?:出现零次或者一次
. : 除了\n以外的任意字符
{n} : 出现n次
{n,} : 出现n到多次
{n,m} : 出现n到m次
var reg=/^0.2$/; //以0开头,以2结尾,中间可以是\n以外的任意字符 ==
5.有以下ES6代码
function * gen() {
yield 1;
yield 2;
yield 3;
}
下面选项描述正确的是哪个( C )
A.gen()执行后返回2
B.gen()执行后返回undefined
C.gen()执行后返回一个Generator对象
D.gen()执行后返回1
== function声明 (function关键字后跟一个星号)定义了一个生成器函数 ( generator function ),它返回一个 Generator 对象.
也可以定义生成器函数 使用构造函数 GeneratorFunction 和一个 function*expression ==
6.以下 javascript 代码,在浏览器中运行的结果是( 首先全部输出first,然后全部输出second )
== JavaScript 是单线程的,setTimeout 设置的是异步任务,会放在 macrotask 里面,等待执行栈的代码执行完毕之后才会执行 macrotask 里面的异步任务,所以这里会等待 for 循环执行完毕才会执行定时器设置的任务。 ==
7.如何遍历下面的 my_data 对象( for(var key in my_data) {} )
var my_data={a:’Ape’, b:’Banana’, c:’Citronella’};
8.关于 this 的工作原理
this有四种情况!
== a.当在函数调用的时候指向widow
b.当方法调用的时候指向调用对象
c.当用apply和call上下文调用的时候指向传入的第一个参数
d.构造函数调用指向实例对象 ==
9.说明以下函数是否可以执行( 类型错误 )
(function() {
var x=foo();
var foo=function foo() {
return "foobar"
};
return x;
})();
10.以下代码执行后,array 的结果是 [,2,3,4]
let array = [,1,,2,,3];
array = array.map((i) => ++i)
11.JavaScript中如何实现跨域
== a. jsonp请求;jsonp的原理是利用script标签的跨域特性,可以不受限制地从其他域中加载资源,类似的标签还有img
b. document.domain;这种方式用在主域名相同子域名不同的跨域访问中
c. window.name;window的name属性有个特征:在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置.
d. window.postMessage;window.postMessages是html5中实现跨域访问的一种新方式,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源.
e. CORS;CORS背后的基本思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是应该失败.
f. Web Sockets;web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接.取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议. ==
12.以下代码的输出结果是 Error
var f = function g() {
return 23;
};
typeof g();
== 在 JS 里,声明函数只有 2 种方法:
第 1 种: function foo(){…} (函数声明)
第 2 种: var foo = function(){…} (等号后面必须是匿名函数,这句实质是函数表达式) ==
13.angularjs1中的$apply()的作用是( 使方法生效 )
14.javascript的数据类型:
== 基本数据类型:String Number Boolean Null Undefined Symbol(ES6新增-表示独一无二的值)
复杂数据类型:Object Array Function RegExp Date Error
全局数据类型:Math ==
15.javascript原始数据类型
== 原始类型(Primitives) Null Undefined Boolean Number String Symbol
内置类型(Built-in) Null Undefined Boolean Number String Object Symbol ==
16.描述javascript内部对象
== History 对象包含用户(在浏览器窗口中)访问过的 URL
Location 对象包含有关当前 URL 的信息
Window 对象表示浏览器中打开的窗口
Navigator 对象包含有关浏览器的信息 ==
17.给网页添加javascript的方式有
== 使用script标签,将javascript代码写到script之间
添加外部javascript文件
使用行内javascript ==
18.那些方法会返回一个数组
== Object.keys()
String.prototype.split() ==
19.原型链相关知识
a.Object.prototype只是一个普通对象,它是js原型链的最顶端
Object.prototype.proto=== null;//true
Object.prototype.prototype === undefied;//true
Object.prototype只是一个普通对象(普通对象没有prototype属性,所以值是undefined),Object.prototype是js原型链的最顶端,它的__proto__是null(有__proto__属性,但值是null,因为这是原型链的最顶端).
b.在js中如果A对象是由B函数构造的,那么A.proto === B.prototype.
javascript中对象是由Object创建的,函数是由Function创建的.
c.内置的Object是其实也是一个函数对象,它是由Function创建的.
Object.proto === Function.prototype;
d.js中每一个对象或函数都有__proto__属性,但是只有函数对象才有prototype属性.
//函数对象
function Person(){
}
普通对象
var obj = {};
obj.proto === Object.prototype;//true
obj.prototype === undefined;//true
Person.proto === Function.prototype;//true
Person.prototype !== undefined;//true
原型链是基于__proto__形成的,继承是通过prototype实现的.
e.Function.prototype是个特例,它是函数对象,但是没有prototype属性.其他所有函数都有prototype属性.
Function.prototype.prototype === undefined;//true
f.内置的Function也是一个函数对象,它是通过自己来创建自己的.
Function.proto=== Function.prototype;//true
g.函数也是对象,因为Function.prototype__proto__指向Object.prototype.
typeof Function.prototype.proto) === “object”;//true
Function.prototype.proto=== Object.prototype;//true
20.如何在JS里判断一个对象oStringObject是否为String
== oStringObject instanceof String ==
21.如何理解JavaScript
== JavaScript是一种动态类型,弱类型个,基于原型,直译式的脚本语言.
JavaScript是一门单线程的语言.
浏览器端的JavaScript包含ECMAScript,DOM对象以及BOM对象.
JavaScript语言不仅可以在浏览器环境运行,也可以在node提供的服务器端的平台运行. ==
22.页面有一个按钮button id为 button1,通过原生的js 设置背景色为红色document.getElementById(‘button1’).style.backgroundColor=“red”;
23.现有一组人员年龄的数据,要求将这些人员的年龄按照从小到大的顺序进行排列起来,要怎样实现
24.下面这段JS程序的执行结果是: [1,2,3]
var a =[1,2,3];
var b = a.slice();
b.push(4);
console.log(a);
25.在Javascript 中,以下代码返回true还是false( false )
var test=1.2;typeof test=='float';
变量test中存储的数字类型 1.2, typeof tset 返回 ‘number’, ‘number’ !== ‘number’,返回 false
26.在标准的 JavaScript 中, Ajax 异步执行调用基于哪一个机制才能实现( Event和callback )
27.控制台打印的结果是( 0 1 2 2 )
for(let i=0;i<2;i++){
setTimeout(function(){
console.log(i)
},100);
}
for(var i=0;i<2;i++){
setTimeout(function(){
console.log(i)
},100);
}
28.查看如下代码:
var datas=[10,20,30];
datas.unshift(40,50); datas.pop();
datas.push(60,70); datas.shift();
console.log(datas.toString());
执行的后果是( 50,10,20,60,70 )
29.如何获取下面表单( obj.options[obj.selectedIndex].text )
select域的选择部分的文本,其中obj=document.getElemById(“obj”)
30.以下代码执行后,a.x 和 b.x 的结果分别是( 2 Undefined )
function A(x){
this.x = x;
}
A.prototype.x = 1;
function B(x){
this.x = x;
}
B.prototype = new A();
var a = new A(2), b = new B(3);
delete b.x;