1、分析下段代码输入出结果是(B)
var a,b,c; 隐式类型转换
a=”2”;
b=2;
c=a+b;
console.log©;
A.4 B.22 C.20 D.2
自动类型 String() Number()
1. 字符串相加 转成字符串 再拼接
2. 四则运算 1+b 都是字值 直接计算 3+字符串
3. !运算 自动转换成布尔值 字符串 数值 true
2、分析下段 代码输入出结果是(B)
var x,y;
x=10;
y=x++;
console.log(y);
A.9 B.10 C.11 D.12
前 先计算再赋值;后 相反
3、分析下段代码输入出结果是(D) //D这里true被转为1
var num;
num=5+true;
console.log(num);
A.true B.false C.5 D.6
类型转换 布尔值转换成true->1
4、分析下段代码输入出结果是(B)
var arr = [2,3,4,5,6];
var sum = 0;
for(var i=1;i<arr.length;i++){
sum+=arr[i]
}
console.log(sum);
A.20 B.18 C.14 D.12
5、数组的扩展中,不属于用于数组遍历的函数的是:(D)
A、keys( )
B、entries( )
C、values( )
D、find( )
Var arr = [“aaa”,”bbb”,”ccc”]; //1.keys == 索引 0 1 2 Var k = arr.keys() //迭代器 Console.log(k.next().value) 0 Console.log(k.next().value) 1 Console.log(k.next().value) 2 //2.entries 键值对 key-value Var entry = arr.entries(); Console.log(entry.next().value) [0,’aaa’] Console.log(entry.next().value[0]) aaa //3.values value Var values = arr.values(); Console.log(values.next().value) aaa Console.log(values.next().value) bbb Console.log(values.next().value) ccc //find Var res = arr.find(k => k === “bbb”); Console.log(res) bbb
6、以下代码运行的结果是(B) //B自执行函数的作用域是window, 所以当b=20即修改了全局的b
var a = b = 10;
(function(){ //自执行函数
var a =b=20 //基本功 b=20;var a = b
})();
console.log(b); //全局
A.10 B.20 C.报错 D.undefined
7、在JS中,‘1555’+3的运行结果是(C)
A.1558 B.1555+3 C.15553 D.报错
8、以下代码运行后弹出的结果是(B)
var a = 888;
++a;
alert(a++);
A.888 B.889 C.890 D.891
9、用javascript实现打开一个新窗口,地址为index.html,正确的方法是(A)
A.window.open(“index.html”,””,””); //浏览器dom bom (浏览器对象模型) 单应用页面 div
B.window.open(””,“index.html”,””);
C.window.open(””,””,“index.html”);
D.window.open(“”,””,””);
10、[1,2,3,4].join(“0”).split("")的执行结果是(C)
A."1,2,3,4"
B.[1,2,3,4]
C.[“1”,“0”,“2”,“0”,“3”,“0”,“4”]
D."1,0,2,0,3,0,4"
11、以下ECMAScript变量命名格式正确的是(A) 这里考的变量命名,不能以保留字- 数字开头,了解下
A._125dollor B.1207A C.-dollor D.this
12、下面不属于ECMAScript规范的范围的是:(C) //C ECMA不制定DOM规范,主要是针对JS语言规范定制
A、数据类型
B、语法
C、DOM事件
D、内置对象和函数的标准库
13、在javascript程序中加入注释,方法有:(AB)
A、//注释内容
B、/*注释内容/
C、/*注释内容
D、/*注释内容
14、数组方法中哪个说法是错的(C ) //unshift是头部添加,其它3个是正确的
A、push()尾部添加
B、pop()尾部删除
C、unshift()尾部添加
D、shift()头部删除
解释:
1、””和“=”的不同
答案:“”表示等于,左边等于右边;“=”表示恒等。
console.log(1=='1')//隐式类型转换 console.log(1==='1')//无类型转换
2、函数声明与函数表达式的区别
答案:函数表达式 var fun = function(){} 2种声明方式 函数声明方式存在变量提升,表达式没有提升,即表达式的要先定义再调用。
3、AJAX执行原理
XMLHttpRequest 特点:请求方式,回调结果
4、分析代码的执行结果并描述原因:
var a = 10; function f1(){ //函数里也有变量提升初始化a=b=c=undefined var b = 2 * a; var a = 20; var c = a+1; console.log(b); //nan:not a number console.log(c); } f1()
答案:b=20,c=21.
改:nan,21,这是涉及变量提升,即函数f1中会先初始化a为undefined,再a*2就为nan, 再对a赋值。
5、根据当前目录结构在页面动态展示:
//多层级的数据结构 3for(错了) //递归 自己调用自己 Function Fun(){ If(满足条件){ Fun();//自己调用自己 死循环 没有终止条件 } } Function Fun(){ If(){ //如果有child并且child成都大于0 Fun();//自己调用自己 死循环 没有终止条件 } } /// var data = [ { name:'AAA', child:[ {name:'a1',child:[{name:'a1-1'},{name:'a1-2'}]}, {name:'a2'}, {name:'a3',child:[{name:'a3-1'},{name:'a3-2',child:[{name:'a3-2-1'},{name:'a3-2-2'}]}]} ] }, { name:'BBB', child:[{name:'b1'},{name:'b2'},{name:'b3'}] }, { name:'CCC', child:[{name:'c1'},{name:'c2'},{name:'c3'}] } ]; //是用递归的方式实现,因为数据的层次是不确定的
//递归实现 function loading(data){ //递归装载所有数据并通过ul li展示 var html = "<ul>"; data.forEach(item => { html += "<li>"+item.name+"</li>" //继续添加child if(item.child && item.child.length > 0){ html += loading(item.child) } }); html += "</ul>"; return html; //所有的节点ul li字符串 } var res = loading(data); document.getElementById("tree").innerHTML = res;