递归出题
This commit is contained in:
59
考试/原题/daziji.html
Normal file
59
考试/原题/daziji.html
Normal file
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<script>
|
||||
// var str = "233333333333333333333"
|
||||
// var strnew=""
|
||||
// var i = 0
|
||||
// var typer=setInterval(()=>{
|
||||
// if(str[i]){
|
||||
// document.write(str[i])
|
||||
// i=i+1
|
||||
// }
|
||||
|
||||
// },1000)
|
||||
// if(i==str.length){
|
||||
// clearInterval(typer)
|
||||
// }
|
||||
// document.write(str[i])
|
||||
|
||||
|
||||
// 10
|
||||
//
|
||||
function mofa(n){
|
||||
let str=""
|
||||
if(typeof n=="number"){
|
||||
if(n>0&&n<=10){
|
||||
while(n>0){
|
||||
if(n%2){
|
||||
str="1"+str
|
||||
n=(n-1)/2
|
||||
}else{
|
||||
str="2"+str
|
||||
n=(n-2)/2
|
||||
}
|
||||
}
|
||||
}else{
|
||||
console.log("n必须小于10")
|
||||
}
|
||||
}else{
|
||||
console.log("请输入数字")
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
||||
let mfb=mofa(10)
|
||||
console.log(mfb)
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
BIN
考试/原题/javascript基础测试-到函数递归.docx
Normal file
BIN
考试/原题/javascript基础测试-到函数递归.docx
Normal file
Binary file not shown.
@@ -1,227 +0,0 @@
|
||||
# javascript 基础测试
|
||||
|
||||
## 单选题
|
||||
1. javascript 代码需要放置在______标签之间
|
||||
A.scripe
|
||||
B.javascript
|
||||
C.script
|
||||
D.scripte
|
||||
|
||||
答案 A
|
||||
|
||||
解析 js代码需要放置在script标签之间才能被识别
|
||||
|
||||
2. script 标签可以被放置的位置是
|
||||
A.<!doctype>文档声明之后就可以
|
||||
B.boby标签内部
|
||||
C.html标签结束之后
|
||||
D.head标签内部
|
||||
|
||||
答案 D
|
||||
|
||||
解析 script标签可以放置在 head标签内或者是 body 标签内部
|
||||
|
||||
(B选项是boby标签)
|
||||
|
||||
3. 下面哪种javascript引入方式是错误的
|
||||
A.在.html文件中的body标签中创建script 标签 在script 标签中写 js代码
|
||||
B.在.js文件中写js代码, 在.html通过 ``` <link src="js文件路径"> ```
|
||||
C.在html 标签内执行js语句 如:``` <button onclick="alert()">save</button> ```
|
||||
D.在.html文件内 在head标签中创建script 标签 在script 标签中写 js代码
|
||||
|
||||
答案 B
|
||||
|
||||
解析 link标签是用来引入外部css文件的
|
||||
|
||||
1. 下面两段代码,js文件的加载顺序
|
||||
demo1:
|
||||
|
||||
```
|
||||
<script async src="js/vendor/jquery.js"></script>
|
||||
<script async src="js/script2.js"></script>
|
||||
<script async src="js/script3.js"></script>
|
||||
|
||||
```
|
||||
demo2:
|
||||
|
||||
```
|
||||
<script defer src="js/vendor/jquery.js"></script>
|
||||
<script defer src="js/script2.js"></script>
|
||||
<script defer src="js/script3.js"></script>
|
||||
|
||||
```
|
||||
A.demo1的顺序为:jquery.js, script2,script3
|
||||
demo2的顺序为:script2.js, script3.js, jquery
|
||||
B.demo1的顺序为:script2.js,script3.js,jquery.js
|
||||
demo2的顺序为:script3.js,script2.js,jquery.js
|
||||
C.demo1的顺序为:只执行script2
|
||||
demo2的顺序是 jquery.js, script2.js, script3.js
|
||||
|
||||
D.demo1的顺序是:script3.js,script2.js,jquery.js
|
||||
demo2的执行顺序是:script3.js script2.js jquery,js
|
||||
|
||||
答案:C
|
||||
|
||||
解析 引入js时 script标签中加入async后,js文件的执行顺序不确定 。但是 如果js代码报错,就会造成阻塞 即后面的js代码不执行 所以 demo1 除了jquery.js, script2.js, script3.js 这个顺序之外 其他顺序会因为报错只执行第一个
|
||||
|
||||
引入script标签中加入 defer后,js文件执行顺序确定为 文件引入的顺序
|
||||
|
||||
defer属性只支持外部引入的方式
|
||||
|
||||
|
||||
|
||||
2. 下面哪一种js注释添加方式是正确的
|
||||
A. /
|
||||
B.//
|
||||
C.\
|
||||
D.*
|
||||
|
||||
答案 B
|
||||
|
||||
js单行注释 符号是// js多行注释符号是 /* */
|
||||
|
||||
|
||||
|
||||
3. console.log()在chrome运行的结果会打印在哪里
|
||||
A. 页面上
|
||||
B.开发者工具中的sources中
|
||||
C.开发者工具中的xhr中
|
||||
D.开发者工具的console中
|
||||
|
||||
答案 D
|
||||
|
||||
解析 console.log 会打印在chrome浏览器的console板块中
|
||||
|
||||
|
||||
|
||||
4. 下面哪种JavaScript输出数据方式的表述是错的:
|
||||
|
||||
A.使用 window.alert() 弹出带输入框的警告框。
|
||||
B.使用 document.write() 方法将内容写到 HTML 文档中。
|
||||
C.使用 innerHTML 写入到 HTML 元素。
|
||||
D.使用 console.log() 写入到浏览器的控制台。
|
||||
|
||||
答案: A
|
||||
|
||||
解析 alert 弹出的警告框不包含 输入框
|
||||
|
||||
5. 下面哪个关键字能声明js变量
|
||||
A.def
|
||||
B.var
|
||||
C.数据类型+变量名=变量值
|
||||
D.变量不需要声明 直接写变量名就行
|
||||
|
||||
答案 B
|
||||
|
||||
6. 下面哪个不是js关键字
|
||||
A.abstract
|
||||
B.let
|
||||
C.import
|
||||
D.absolute
|
||||
|
||||
答案 D
|
||||
|
||||
解析 absolute是css的绝对定位
|
||||
|
||||
|
||||
|
||||
7. 下面哪个变量名符合要求
|
||||
A.shop1
|
||||
B.public
|
||||
C.point&
|
||||
D.12SY
|
||||
|
||||
答案 A
|
||||
解析:
|
||||
|
||||
|
||||
名称可包含字母、数字、下划线和美元符号
|
||||
名称必须以字母开头
|
||||
名称也可以 $ 和 _ 开头(但是在本教程中我们不会这么做)
|
||||
名称对大小写敏感(y 和 Y 是不同的变量)
|
||||
保留字(比如 JavaScript 的关键词)无法用作变量名称
|
||||
|
||||
8. 阅读下面代码 选择运行结果
|
||||
code :
|
||||
```
|
||||
var person = "Bill ";
|
||||
var person1="Bill";
|
||||
console.log(person,person1)
|
||||
|
||||
```
|
||||
A. bill Bill
|
||||
B. BillBill
|
||||
C.BILLBILL
|
||||
D. billbill
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
9. 将 "025.5" 的string类型变量转化为 number 类型后 值是
|
||||
A.0255
|
||||
B.255
|
||||
C.25.5
|
||||
D.5.5
|
||||
|
||||
|
||||
10. 1 + ‘1aa’ 的运算结果是
|
||||
A.11aa
|
||||
B.2
|
||||
C.2aa
|
||||
D.1aa
|
||||
|
||||
11. 0 || 3 || 3 的返回结果是
|
||||
A.0
|
||||
B.3
|
||||
C.true
|
||||
D.1
|
||||
12. 1 && 0 && 5 的返回结果是
|
||||
A.0
|
||||
B.1
|
||||
C.true
|
||||
D.5
|
||||
## 填空题
|
||||
1. 什么是字面量 常见的字面量有__ , __ , __ , __ , __ , __
|
||||
|
||||
答案:字面量(literal)用于表达源代码中一个固定值的表示法(notation)
|
||||
字符串自变量 整数字面量 浮点数字面量 布尔字面量 数组字面量 对象字面量
|
||||
|
||||
2. 运算符的优先级
|
||||
3. js基本数据类型和引用数据类型的区别是__________
|
||||
4. 外部引入js文件的优势是
|
||||
5. 在html中 javascript语句是由 "执行"的"指令"
|
||||
6. javascript语句由 , , , 构成
|
||||
7. 分割javascript语句
|
||||
8. 阅读下面代码 写出运行结果
|
||||
code :
|
||||
|
||||
```
|
||||
typeof "John"
|
||||
typeof 3.14
|
||||
typeof NaN
|
||||
typeof false
|
||||
typeof [1,2,3,4]
|
||||
typeof {name:'John', age:34}
|
||||
typeof new Date()
|
||||
typeof function () {}
|
||||
typeof myCar // (如果 myCar 没有声明)
|
||||
typeof null
|
||||
```
|
||||
答案:
|
||||
```
|
||||
typeof "John" // 返回 string
|
||||
typeof 3.14 // 返回 number
|
||||
typeof NaN // 返回 number
|
||||
typeof false // 返回 boolean
|
||||
typeof [1,2,3,4] // 返回 object
|
||||
typeof {name:'John', age:34} // 返回 object
|
||||
typeof new Date() // 返回 object
|
||||
typeof function () {} // 返回 function
|
||||
typeof myCar // 返回 undefined (如果 myCar 没有声明)
|
||||
typeof null // 返回 object
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
BIN
考试/原题/javascript基础测试-运算符刚开始a.docx
Normal file
BIN
考试/原题/javascript基础测试-运算符刚开始a.docx
Normal file
Binary file not shown.
469
考试/原题/javascript基础测试.md
Normal file
469
考试/原题/javascript基础测试.md
Normal file
@@ -0,0 +1,469 @@
|
||||
# javascript 基础测试
|
||||
|
||||
## 单选题
|
||||
1. javascript 代码需要放置在______标签之间
|
||||
A.scripe
|
||||
B.javascript
|
||||
C.script
|
||||
D.scripte
|
||||
|
||||
答案 A
|
||||
|
||||
解析 js代码需要放置在script标签之间才能被识别
|
||||
|
||||
2. script 标签可以被放置的位置是
|
||||
A.<!doctype>文档声明之后就可以
|
||||
B.boby标签内部
|
||||
C.html标签结束之后
|
||||
D.head标签内部
|
||||
|
||||
答案 D
|
||||
|
||||
解析 script标签可以放置在 head标签内或者是 body 标签内部
|
||||
|
||||
(B选项是boby标签)
|
||||
|
||||
3. 下面哪种javascript引入方式是错误的
|
||||
A.在.html文件中的body标签中创建script 标签 在script 标签中写 js代码
|
||||
B.在.js文件中写js代码, 在.html通过 ``` <link src="js文件路径"> ```
|
||||
C.在html 标签内执行js语句 如:``` <button onclick="alert()">save</button> ```
|
||||
D.在.html文件内 在head标签中创建script 标签 在script 标签中写 js代码
|
||||
|
||||
答案 B
|
||||
|
||||
解析 link标签是用来引入外部css文件的
|
||||
|
||||
1. 下面两段代码,js文件的加载顺序
|
||||
demo1:
|
||||
|
||||
```
|
||||
<script async src="js/vendor/jquery.js"></script>
|
||||
<script async src="js/script2.js"></script>
|
||||
<script async src="js/script3.js"></script>
|
||||
|
||||
```
|
||||
demo2:
|
||||
|
||||
```
|
||||
<script defer src="js/vendor/jquery.js"></script>
|
||||
<script defer src="js/script2.js"></script>
|
||||
<script defer src="js/script3.js"></script>
|
||||
|
||||
```
|
||||
A.demo1的顺序为:jquery.js, script2,script3
|
||||
demo2的顺序为:script2.js, script3.js, jquery
|
||||
B.demo1的顺序为:script2.js,script3.js,jquery.js
|
||||
demo2的顺序为:script3.js,script2.js,jquery.js
|
||||
C.demo1的顺序为:只执行script2
|
||||
demo2的顺序是 jquery.js, script2.js, script3.js
|
||||
|
||||
D.demo1的顺序是:script3.js,script2.js,jquery.js
|
||||
demo2的执行顺序是:script3.js script2.js jquery,js
|
||||
|
||||
答案:C
|
||||
|
||||
解析 引入js时 script标签中加入async后,js文件的执行顺序不确定 。但是 如果js代码报错,就会造成阻塞 即后面的js代码不执行 所以 demo1 除了jquery.js, script2.js, script3.js 这个顺序之外 其他顺序会因为报错只执行第一个
|
||||
|
||||
引入script标签中加入 defer后,js文件执行顺序确定为 文件引入的顺序
|
||||
|
||||
defer属性只支持外部引入的方式
|
||||
|
||||
|
||||
|
||||
2. 下面哪一种js注释添加方式是正确的
|
||||
A. /
|
||||
B.//
|
||||
C.\
|
||||
D.*
|
||||
|
||||
答案 B
|
||||
|
||||
解析 js单行注释 符号是// js多行注释符号是 /* */
|
||||
|
||||
|
||||
|
||||
3. console.log()在chrome运行的结果会打印在哪里
|
||||
A. 页面上
|
||||
B.开发者工具中的sources中
|
||||
C.开发者工具中的xhr中
|
||||
D.开发者工具的console中
|
||||
|
||||
答案 D
|
||||
|
||||
解析 console.log 会打印在chrome浏览器的console板块中
|
||||
|
||||
|
||||
|
||||
4. 下面哪种JavaScript输出数据方式的表述是错的:
|
||||
|
||||
A.使用 window.alert() 弹出带输入框的警告框。
|
||||
B.使用 document.write() 方法将内容写到 HTML 文档中。
|
||||
C.使用 innerHTML 写入到 HTML 元素。
|
||||
D.使用 console.log() 写入到浏览器的控制台。
|
||||
|
||||
答案: A
|
||||
|
||||
解析 alert 弹出的警告框不包含 输入框
|
||||
|
||||
5. 下面哪个关键字能声明js变量
|
||||
A.def
|
||||
B.var
|
||||
C.数据类型+变量名=变量值
|
||||
D.变量不需要声明 直接写变量名就行
|
||||
|
||||
答案 B
|
||||
|
||||
6. 下面哪个不是js关键字
|
||||
A.abstract
|
||||
B.let
|
||||
C.import
|
||||
D.absolute
|
||||
|
||||
答案 D
|
||||
|
||||
解析 absolute是css的绝对定位
|
||||
|
||||
|
||||
|
||||
7. 下面哪个变量名符合要求
|
||||
A.shop1
|
||||
B.public
|
||||
C.point&
|
||||
D.12SY
|
||||
|
||||
答案 A
|
||||
解析:
|
||||
|
||||
|
||||
名称可包含字母、数字、下划线和美元符号
|
||||
名称必须以字母开头
|
||||
名称也可以 $ 和 _ 开头(但是在本教程中我们不会这么做)
|
||||
名称对大小写敏感(y 和 Y 是不同的变量)
|
||||
保留字(比如 JavaScript 的关键词)无法用作变量名称
|
||||
|
||||
8. 阅读下面代码 选择运行结果
|
||||
code :
|
||||
```
|
||||
var person = "bilibili ";
|
||||
var person1="干杯!";
|
||||
console.log(person,person1)
|
||||
|
||||
```
|
||||
A. bilibili 干杯!
|
||||
B. bilibili干杯!
|
||||
C.bilibili,干杯
|
||||
D.person,person1
|
||||
|
||||
答案 D
|
||||
解析:person person1是变量会被解析,中间的','只是分割 不会按,显示 字符串中的空格会被保留
|
||||
|
||||
|
||||
|
||||
|
||||
9. 将 "025.5" 的string类型变量转化为 number 类型后 值是
|
||||
A.0255
|
||||
B.255
|
||||
C.25.5
|
||||
D.5.5
|
||||
|
||||
答案 D
|
||||
解析 字符串转成数字 从第一个不是0的数字开始算
|
||||
|
||||
10. 1 + ‘1aa’ 的运算结果是
|
||||
A.11aa
|
||||
B.2
|
||||
C.2aa
|
||||
D.1aa
|
||||
答案 A
|
||||
解析 +操作的两边是字符串时 充当连接符的作用
|
||||
|
||||
11. 0 || 3 || 3 的返回结果是
|
||||
A.0
|
||||
B.3
|
||||
C.true
|
||||
D.1
|
||||
答案 B
|
||||
解析 || 运算符返回第一个不为0(false)的值
|
||||
12. 1 && 0 && 5 的返回结果是
|
||||
A.0
|
||||
B.1
|
||||
C.true
|
||||
D.5
|
||||
答案 B
|
||||
解析 &&运算符 返回第一个为true(1)的值
|
||||
|
||||
<hr>
|
||||
13. 下面代码进行了几步操作 分别是什么操作
|
||||
code:
|
||||
```
|
||||
var x = 15;
|
||||
```
|
||||
A. 1 定义值为15的变量x
|
||||
B. 2 定义一个变量x; 把15作为值赋给x
|
||||
C. 3 var声明; 名字是x; 值=15
|
||||
D. 4 var声明; 名字是x; 值=; 15
|
||||
答案 B
|
||||
|
||||
|
||||
14. 读代码选结果
|
||||
code:
|
||||
```
|
||||
var a=3
|
||||
var b=0
|
||||
var sum=a+b
|
||||
console.log(sum)
|
||||
console.log(sum+"")
|
||||
console.log(a+b+"")
|
||||
|
||||
```
|
||||
A.3,30,30
|
||||
B.30,30,3O
|
||||
C.3,3,30
|
||||
D.30,30,30
|
||||
|
||||
答案 C
|
||||
解析:在数字类型后面+"" 的时候,就把整个输出的内容变成了字符串类型 不做数字运算直接拼接 此时+做连接符
|
||||
|
||||
15. 读代码 选结果
|
||||
code
|
||||
```
|
||||
var a=9
|
||||
var b=1
|
||||
console.log(--a)
|
||||
console.log(a--)
|
||||
conosle.log(b--)
|
||||
|
||||
```
|
||||
A. 8,8,1
|
||||
B.8,7,0
|
||||
C.9,1,1
|
||||
D.8,8,报错
|
||||
|
||||
答案 D
|
||||
解析 --a 前置自减,先减再执行; a--后置自减 先执行再减
|
||||
|
||||
16. typeOf 10+''的结果是
|
||||
A. String
|
||||
B. Number
|
||||
C. undefined
|
||||
D.null
|
||||
答案 B
|
||||
解析 数字+字符串的时候 中间的+充当连接符的操作
|
||||
17. var a=2 a>3&&a<5 的结果为
|
||||
A. true
|
||||
B.false
|
||||
C.2
|
||||
D.3
|
||||
答案 B
|
||||
18. 定义函数的关键字是
|
||||
A.def
|
||||
B.函数
|
||||
C.function
|
||||
D.func
|
||||
|
||||
答案 C
|
||||
19. 下面定义的函数结构错误的是
|
||||
A.function a(){}
|
||||
B.var b=function(){}
|
||||
C.()=>{}
|
||||
D.functian a(){}
|
||||
答案 D
|
||||
|
||||
<hr>
|
||||
|
||||
20. 读代码 选执行结果
|
||||
code
|
||||
```
|
||||
add(a,b){
|
||||
return a+b
|
||||
}
|
||||
add(1,2)
|
||||
```
|
||||
A. 3 B. 12 C.a+b D. 空,什么都不出
|
||||
答案: D
|
||||
解析: 函数add返回的值没有接收
|
||||
|
||||
21. 函数 function greet(){console.log("hello)} 的返回值是
|
||||
A. hello B.空 什么也没有
|
||||
C. undefined D. null
|
||||
答案 C
|
||||
|
||||
22. 读代码 选执行结果
|
||||
code
|
||||
```
|
||||
myfunc(x,y=1){
|
||||
console.log(x*y)
|
||||
}
|
||||
myfunc(3)
|
||||
```
|
||||
A. 3 B.x*y c.NaN D. 报错
|
||||
答案 A
|
||||
|
||||
23. 读代码 选执行结果
|
||||
code
|
||||
```
|
||||
myfunc(x=1,y){
|
||||
console.log(x*y)
|
||||
}
|
||||
myfunc( ,3)
|
||||
```
|
||||
A. 3 B.x*y c.NaN D. 报错
|
||||
答案 D
|
||||
解析 js在定义函数时,需要把必传的参数写在前面
|
||||
|
||||
24. 读代码 选执行结果
|
||||
```
|
||||
function a(n) {
|
||||
if (n <= 1) {
|
||||
return 1
|
||||
} else {
|
||||
return n * a(n - 1)
|
||||
}
|
||||
}
|
||||
console.log(a(5))
|
||||
|
||||
var cheng=a
|
||||
a=null
|
||||
console.log(cheng(5))
|
||||
|
||||
```
|
||||
|
||||
A. 报错 B.30 C. 60 D.120
|
||||
答案 A
|
||||
|
||||
25. 读代码 选执行结果
|
||||
```
|
||||
function fn()
|
||||
{
|
||||
this.user = '追梦子';
|
||||
var obj={user:"momo"}
|
||||
return {};
|
||||
}
|
||||
var a = new fn;
|
||||
console.log(a.user);
|
||||
```
|
||||
A. 追梦子 B. momo C.undefined D. 报错答案:C
|
||||
|
||||
26. 读代码 选执行结果
|
||||
```
|
||||
function myFunction() {
|
||||
var carName = "Volvo";
|
||||
}
|
||||
console.log(caName)
|
||||
```
|
||||
A.Volvo B.caName C.undefined D.报错
|
||||
|
||||
答案 D
|
||||
|
||||
|
||||
## 填空题
|
||||
1. 什么是字面量 常见的字面量有__ , __ , __ , __ , __ , __
|
||||
|
||||
答案:字面量(literal)用于表达源代码中一个固定值的表示法(notation)
|
||||
字符串自变量 整数字面量 浮点数字面量 布尔字面量 数组字面量 对象字面量
|
||||
|
||||
2. 运算符的优先级
|
||||
答案 [],.,{}, ++,-- , *, /,%, +,-, <,<=,>,>= ==,!=,===,!==, && , ||, ?:,
|
||||
=、+=、-=、*=、/=、%=、&=、|=、^=、<、<=、>、>=、>>= ,
|
||||
3. js基本数据类型和引用数据类型的区别是__________
|
||||
答案 基本数据类型(存放在栈中)
|
||||
基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问
|
||||
引用数据类型(存放在堆内存中的对象,每个空间大小不一样,要根据情况进行特定的配置)
|
||||
引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
|
||||
引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象
|
||||
|
||||
|
||||
4. 外部引入js文件的优势是
|
||||
答案:(1)可维护性:遍及不同HTML页面的javascript会造成维护问题,但把所有js文件都放在一个文件夹中维护起来就轻松多了。而且开发人员因为也能够在不触及HTML标记的情况下集中精力编写js代码
|
||||
(2)可缓存:浏览器能够根据具体的设置缓存链接的所有外部js文件,也就是说,如果有2个页面都使用同一个文件,那么这个文件只需下载一次。因此,最终结果就是能够加快页面加载速度。
|
||||
(3)适应未来:通过外部文件包含js无需使用XHTML或hack注释。HTML和XHTML包含外部文件的语法是相同的。
|
||||
|
||||
5. 在html中 javascript语句是由 "执行"的"指令"
|
||||
答案 浏览器
|
||||
6. javascript语句由 , , , 构成
|
||||
答案 ECMAScript BOM DOM
|
||||
7. 分割javascript语句
|
||||
答案 ;
|
||||
8. 阅读下面代码 写出运行结果
|
||||
code :
|
||||
|
||||
```
|
||||
typeof "John"
|
||||
typeof 3.14
|
||||
typeof NaN
|
||||
typeof false
|
||||
typeof [1,2,3,4]
|
||||
typeof {name:'John', age:34}
|
||||
typeof new Date()
|
||||
typeof function () {}
|
||||
typeof myCar // (如果 myCar 没有声明)
|
||||
typeof null
|
||||
```
|
||||
答案:
|
||||
```
|
||||
typeof "John" // 返回 string
|
||||
typeof 3.14 // 返回 number
|
||||
typeof NaN // 返回 number
|
||||
typeof false // 返回 boolean
|
||||
typeof [1,2,3,4] // 返回 object
|
||||
typeof {name:'John', age:34} // 返回 object
|
||||
typeof new Date() // 返回 object
|
||||
typeof function () {} // 返回 function
|
||||
typeof myCar // 返回 undefined (如果 myCar 没有声明)
|
||||
typeof null // 返回 object
|
||||
|
||||
```
|
||||
<hr>
|
||||
9. ```25%6*(10-4) ```执行结果为:
|
||||
|
||||
10.读代码分析预编译过程
|
||||
```
|
||||
// 函数
|
||||
function fn(a){
|
||||
console.log(a);
|
||||
var a = 123;
|
||||
console.log(a);
|
||||
|
||||
function a(){};
|
||||
console.log(a);
|
||||
|
||||
var b = function(){};
|
||||
console.log(b);
|
||||
function d(){};
|
||||
}
|
||||
|
||||
fn(1);
|
||||
```
|
||||
|
||||
|
||||
|
||||
# 简答题
|
||||
* 实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
|
||||
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
|
||||
2、如果 num 能被 3 整除,返回字符串 fizz
|
||||
3、如果 num 能被 5 整除,返回字符串 buzz
|
||||
4、如果参数为空或者不是 Number 类型,返回 false
|
||||
5、其余情况,返回参数 num
|
||||
示例
|
||||
输入:15
|
||||
输出:fizzbuzz
|
||||
|
||||
|
||||
* 编写一个函数来验证输入的字符串是否是有效的 IPv4 地址。
|
||||
如果是有效的 IPv4 地址,返回 "IPv4" ;
|
||||
如果不是上述类型的 IP 地址,返回 "Neither" 。
|
||||
IPv4 地址由十进制数和点来表示,每个地址包含 4 个十进制数,其范围为 0 - 255, 用(".")分割。比如,
|
||||
172.16.254.1;
|
||||
|
||||
|
||||
* 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,
|
||||
但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
|
||||
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
|
||||
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
|
||||
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需
|
||||
要你帮他设计一个投入方案使他最后恰好拥有n个魔法币
|
||||
输入描述:
|
||||
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。
|
||||
输出描述:
|
||||
输出一个字符串,每个字符表示该次小易选取投入的魔法机器。其中只包含字符'1'和'2'。
|
||||
比如输入10,返回122
|
||||
BIN
考试/原题/js对象20210407.docx
Normal file
BIN
考试/原题/js对象20210407.docx
Normal file
Binary file not shown.
117
考试/原题/js对象20210407.md
Normal file
117
考试/原题/js对象20210407.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# 函数相关的题目
|
||||
|
||||
## 选择
|
||||
|
||||
1. 下面哪个定义对象的方式是错误的
|
||||
A.var obj={uname:"asd",pwd:"123",quanxian:[1,3,4,9,8]}
|
||||
B.Object wings={order:2,price:80}
|
||||
C.obj=new Object()
|
||||
D.
|
||||
```
|
||||
function Creator(){
|
||||
this.name="god"
|
||||
}
|
||||
const momo=new Creator()
|
||||
|
||||
```
|
||||
|
||||
答案 B
|
||||
|
||||
2. .已知 obj={code:200,msg:"操作成功",data:[{articleid:1,title:"关于我不是史莱姆那件事",reader:198},{articleid:2,title:"关于我不是史莱姆那件事",reader:19},{articleid:3,title:"qwer",reader:18},{articleid:4,title:"re0",reader:198},{articleid:5,title:"买个苹果",reader:23}]}
|
||||
下面哪个访问title=re0的articleid的方式是正确的
|
||||
|
||||
A.obj.data(3)["articleid]
|
||||
B.obj["data"].3.articleid
|
||||
C.obj.data[3].articleid
|
||||
D.obj[3].articleid
|
||||
|
||||
答案C
|
||||
|
||||
|
||||
|
||||
3.下面哪个关于对象的说法是错误的
|
||||
A.JavaScript 对象是被命名值的容器。
|
||||
B.值以名称:值对的方式来书写(名称和值由冒号分隔)。
|
||||
C.所有汽车都拥有同样的属性,但属性值因车而异。
|
||||
|
||||
所有汽车都拥有相同的方法,但是方法会在不同时间被执行。
|
||||
|
||||
D.this 关键词指的是它所属的对象。它拥有不同的值,具体取决于定义它的位置:
|
||||
|
||||
答案 D
|
||||
|
||||
4. 在函数单独使用时, this 指的是
|
||||
A. 他自身
|
||||
B.他父级
|
||||
C. Object
|
||||
D.window
|
||||
|
||||
5. 下面代码中,严格模式下的 this的值为
|
||||
|
||||
```
|
||||
"use strict";
|
||||
function myFunction() {
|
||||
return this;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
A. window
|
||||
B. Object
|
||||
C. global
|
||||
D. undefined
|
||||
|
||||
答案 D
|
||||
|
||||
6. 下面代码中的this 指向的是
|
||||
```
|
||||
<button onclick="this.style.display='none'">
|
||||
点击来删除我!
|
||||
</button>
|
||||
|
||||
```
|
||||
A. 接收此事件的 HTML 元素
|
||||
B. Object
|
||||
C. global
|
||||
D. window
|
||||
|
||||
答案 A
|
||||
|
||||
7. 下面的代码中运行的结果是
|
||||
|
||||
```
|
||||
var person1 = {
|
||||
fullName: function() {
|
||||
return this.firstName + " " + this.lastName;
|
||||
}
|
||||
}
|
||||
var person2 = {
|
||||
firstName:"Bill",
|
||||
lastName: "Gates",
|
||||
}
|
||||
person1.fullName.call(person2);
|
||||
|
||||
```
|
||||
|
||||
A. Bill B.Gates C. Gates Bill D. Bill Gates
|
||||
|
||||
答案 D
|
||||
|
||||
8. 关于this的说法 错误的是
|
||||
A.在对象方法中,this 指的是此方法的“拥有者”。
|
||||
B. 在浏览器窗口中,全局对象是 [object Window]
|
||||
C. 在严格模式中,如果单独使用,那么 this 指的是全局对象 [object Window]
|
||||
D. 只有apply,call能改变对象的this指向
|
||||
答案 D
|
||||
|
||||
9. 下面哪一项不是严格模式不允许的
|
||||
A. 删除变量(或对象)
|
||||
B.删除函数
|
||||
C.八进制数值文本
|
||||
D. 转义字符
|
||||
|
||||
10. JavaScript 哪个属性允许您为对象构造器添加新属性:
|
||||
A._proto_
|
||||
B.prototype
|
||||
C.proto
|
||||
D.构造器.属性 直接添加
|
||||
BIN
考试/原题/js测试20210406.docx
Normal file
BIN
考试/原题/js测试20210406.docx
Normal file
Binary file not shown.
103
考试/原题/js测试20210406.md
Normal file
103
考试/原题/js测试20210406.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# js 测试
|
||||
|
||||
## 选择题
|
||||
1. 下面声明数组的方式错误的是
|
||||
A. var arr=[]
|
||||
B. var arr=new Array(7)
|
||||
C.var arr=[{name:"asd",age:20"},{name:"asd",age:20"},{name:"asd",age:20"}]
|
||||
D.var arr=[{name:"asd",age:20"},{name:"asd",age:20"},0]
|
||||
|
||||
答案 D
|
||||
|
||||
2. 下面哪个不是数组的方法
|
||||
A.pop
|
||||
B.shift
|
||||
C.remove
|
||||
D.push
|
||||
答案C
|
||||
|
||||
3. 下面哪个遍历数组的方式是错的
|
||||
A.
|
||||
|
||||
var arr = [1, 2, 3, 4, 5, 6]
|
||||
for(var i = 0; i < arr.length; i++) {
|
||||
console.log(arr[i])
|
||||
}
|
||||
B.
|
||||
|
||||
var arr = ['我', '是', '谁', '我', '在', '哪']
|
||||
for(var key in arr) {
|
||||
console.log(key)
|
||||
}
|
||||
|
||||
C.
|
||||
|
||||
var arr = ['我', '是', '谁', '我', '在', '哪']
|
||||
for(var key of arr) {
|
||||
console.log(key)
|
||||
}
|
||||
D.
|
||||
|
||||
var arr = [1, 2, 3, 4, 5, 6]
|
||||
var newArr = arr.map(function (item, idnex) {
|
||||
return item * item
|
||||
})
|
||||
|
||||
console.log(newArr)
|
||||
|
||||
## 填空题
|
||||
1. 列举js事件类型(至少五个)
|
||||
|
||||
2. 检测NaN的数据类型结果为
|
||||
|
||||
3. 读代码写执行结果
|
||||
```
|
||||
function C1(name) {
|
||||
if (name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
function C2(name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
function C3(name) {
|
||||
this.name = name || 'join';
|
||||
}
|
||||
C1.prototype.name = 'Tom';
|
||||
C2.prototype.name = 'Tom';
|
||||
C3.prototype.name = 'Tom';
|
||||
alert((new C1().name) + (new C2().name) + (new C3().name));
|
||||
|
||||
```
|
||||
|
||||
## 简答题
|
||||
1. 写一个函数实现传入一个数组 实现冒泡排序
|
||||
|
||||
|
||||
|
||||
|
||||
2. 数组去重(多种方法实现)
|
||||
|
||||
|
||||
|
||||
3. 写一个函数求传入数组的平均数
|
||||
|
||||
|
||||
|
||||
4.
|
||||
|
||||
在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名、性别、年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦。
|
||||
|
||||
学生信息如下:
|
||||
|
||||
('小A','女',21,'大一'), ('小B','男',23,'大三'),
|
||||
|
||||
('小C','男',24,'大四'), ('小D','女',21,'大一'),
|
||||
|
||||
('小E','女',22,'大四'), ('小F','男',21,'大一'),
|
||||
|
||||
('小G','女',22,'大二'), ('小H','女',20,'大三'),
|
||||
|
||||
('小I','女',20,'大一'), ('小J','男',20,'大三')
|
||||
BIN
考试/原题/js递归20210409.docx
Normal file
BIN
考试/原题/js递归20210409.docx
Normal file
Binary file not shown.
319
考试/原题/js递归20210409.md
Normal file
319
考试/原题/js递归20210409.md
Normal file
@@ -0,0 +1,319 @@
|
||||
# 递归
|
||||
## 简答题
|
||||
1. 九九乘法表
|
||||
```
|
||||
function num(nums){
|
||||
if(nums==1){
|
||||
console.log("1x1=1")
|
||||
}else{
|
||||
num(nums-1)
|
||||
for(var i=1,str='';i<=nums;i++){
|
||||
str += `${i}x${nums}=`+i*nums+' '
|
||||
}
|
||||
console.log(str)
|
||||
}
|
||||
}
|
||||
num(9)
|
||||
// 循环
|
||||
for(var i=1;i<10;i++){
|
||||
let str = ''
|
||||
for(var j=1;j<10;j++){
|
||||
if(i>=j){
|
||||
str += `${j}x${i}=`+i*j+' '
|
||||
}
|
||||
}
|
||||
console.log(str)
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
2. 定义一个函数 实现n的阶乘
|
||||
```
|
||||
function jc(n){
|
||||
if(n<=1){
|
||||
return 1;
|
||||
}else{
|
||||
return n*arguments.callee(n+1);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
3. 一只青蛙可以一次跳 1 级台阶或者一次跳 2 级台阶,例如:
|
||||
跳上第 1 级台阶只有一种跳法:直接跳 1 级即可。 跳上第 2 级台阶有两种跳法:每次跳 1 级,跳
|
||||
两次;或者一次跳 2 级。 问要跳上第 n 级台阶有多少种跳法?
|
||||
```
|
||||
|
||||
function ge(n){
|
||||
if(n==0){
|
||||
return 0;
|
||||
}else if(n==1){
|
||||
return 1;
|
||||
}else if(n==2){
|
||||
return 2;
|
||||
}
|
||||
return ge(n-1)+ge(n-2);
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4. 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数求/1+1/3+…+1/n;
|
||||
```
|
||||
function num(nums){
|
||||
if(nums==1){
|
||||
console.log("1x1=1")
|
||||
}else{
|
||||
num(nums-1)
|
||||
for(var i=1,str='';i<=nums;i++){
|
||||
str += `${i}x${nums}=`+i*nums+' '
|
||||
}
|
||||
console.log(str)
|
||||
}
|
||||
}
|
||||
num(9)
|
||||
// 循环
|
||||
for(var i=1;i<10;i++){
|
||||
let str = ''
|
||||
for(var j=1;j<10;j++){
|
||||
if(i>=j){
|
||||
str += `${j}x${i}=`+i*j+' '
|
||||
}
|
||||
}
|
||||
console.log(str)
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
5. 1+2+3+4+....+100(n)求和
|
||||
```
|
||||
function dg(x){ //第一题
|
||||
if(x==1)return 1;
|
||||
return dg(x-1)+x;
|
||||
}
|
||||
var lj=dg(100);
|
||||
console.log(lj)
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
6. 细胞分裂 有一个细胞 每一个小时分裂一次,一次分裂一个子细胞,第三个小时后会死亡。那么n个小时候有多少细胞?
|
||||
|
||||
```
|
||||
// 每三个小时为一个周期 , 第四个小时就 go die 了。
|
||||
// 方法一
|
||||
// 第一个小时,只有a态细胞;第二个小时,a态细胞分裂,原来的a态细胞变成了b态细胞,分裂出来的细胞变成了新的a态细胞;第三个小时,a态细胞继续分裂变成b态细胞和新的a态细胞,b态细胞分裂变成c态细胞和a态细胞;第四个小时,a、b、c态细胞都会分裂,并且按照之前的规律转变。得出下面的结论
|
||||
// a 初始态 一个小时 前一个小时的 a+b+c
|
||||
// b 幼年态 两个小时 前一个小时的 a
|
||||
// c 成熟态 三个小时 前一个小时的 b
|
||||
function allCell(n){
|
||||
// a态细胞
|
||||
let aCell = function(n){
|
||||
if(n==1){
|
||||
return 1;
|
||||
}else{
|
||||
return aCell(n-1)+bCell(n-1)+cCell(n-1);
|
||||
}
|
||||
}
|
||||
// b态细胞
|
||||
let bCell = function(n){
|
||||
if(n==1){
|
||||
return 0;
|
||||
}else{
|
||||
return aCell(n-1);
|
||||
}
|
||||
}
|
||||
// c态细胞
|
||||
let cCell = function(n){
|
||||
if(n==1||n==2){
|
||||
return 0;
|
||||
}else{
|
||||
return bCell(n-1);
|
||||
}
|
||||
}
|
||||
return aCell(n)+bCell(n)+cCell(n)
|
||||
}
|
||||
console.log(allCell(10))
|
||||
// 方法二
|
||||
// 这个方法就是分成了 活着的 和 死亡的
|
||||
function cell(hour){
|
||||
// 活着的细胞
|
||||
function livecell(hour){
|
||||
if(hour<4){
|
||||
// 前三个小时没有死亡的细胞 成2的n-1次方增长
|
||||
return Math.pow(2,hour-1)
|
||||
}else{
|
||||
// 从第四个小时开始有死亡的细胞
|
||||
// 活着的细胞 = 前一个小时活着的细胞 - 这个小时死去的细胞
|
||||
return livecell(hour-1)*2 - diecell(hour)
|
||||
}
|
||||
}
|
||||
// 死亡的细胞
|
||||
function diecell(hour){
|
||||
if(hour<4){
|
||||
// 前三个小时没有死亡的细胞
|
||||
return 0
|
||||
}else{
|
||||
// 因为三个小时一个周期
|
||||
// 也就是每三个小时,(n-3)时的细胞就会死完
|
||||
// 那么 这个小时(n)死去的细胞 + 上个小时(n-1)死去的细胞 + 前两个小时(n-2)死去的细胞 = 前三个小时(n-3)活着的细胞
|
||||
return livecell(hour-3) - diecell(hour-1) - diecell(hour-2)
|
||||
}
|
||||
}
|
||||
return livecell(hour)
|
||||
}
|
||||
console.log(cell(10))
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
7. 有 64 个格子,第一个格子放一粒麦子,第二个放2粒,第三个放4粒...每个格子都是前边的两倍。一共有多少粒?
|
||||
|
||||
```
|
||||
let sum = 0
|
||||
let start = 1;
|
||||
let end = 0;
|
||||
function tow(){
|
||||
if(end>=64){
|
||||
return false
|
||||
}
|
||||
sum+=start
|
||||
start*=2
|
||||
end++
|
||||
tow()
|
||||
}
|
||||
tow()
|
||||
console.log(sum)
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
8. 输出斐波那契数列
|
||||
```
|
||||
// 递归
|
||||
let a = 0;
|
||||
function tu(num){
|
||||
a++
|
||||
if(num==1||num==2){
|
||||
return 1
|
||||
}
|
||||
let nums = tu(num-1)+tu(num-2)
|
||||
return nums
|
||||
}
|
||||
console.log(tu(8),a)
|
||||
// 闭包解决
|
||||
// 也就是存在数组中,再次循环时,如果数组中已经存在,就返回数组中的值,大大减少了递归调用函数的次数
|
||||
var count2=0;
|
||||
var fiba = (function(){
|
||||
var arr = [0,1,1]; //第0位只是占位,从第一位开始算起
|
||||
return function(n){
|
||||
count2++;
|
||||
var res=arr[n];
|
||||
if(res){// 如果arr中存在,返回这个值
|
||||
console.log(res,'----')
|
||||
return res;
|
||||
}else{
|
||||
console.log(arr[n],'+++++')
|
||||
arr[n]=fiba(n-1)+fiba(n-2);
|
||||
return arr[n];
|
||||
}
|
||||
}
|
||||
})();
|
||||
console.log(fiba(8),count2)
|
||||
// 普通
|
||||
// 普通循环解决这个问题是性能最好的。
|
||||
let a = 1;
|
||||
let b = 1
|
||||
let c;
|
||||
function tu(num){
|
||||
for(let i=0;i<num-2;i++){
|
||||
c = a+b;
|
||||
a = b;
|
||||
b = c
|
||||
}
|
||||
return c;
|
||||
}
|
||||
console.log(tu(8))
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
9.
|
||||
10. 下面代码导致的问题如何解决
|
||||
```
|
||||
function factorial(num){
|
||||
if (num <= 1){
|
||||
return 1;
|
||||
} else {
|
||||
return num * factorial(num-1);
|
||||
}
|
||||
}
|
||||
var anotherFactorial = factorial;
|
||||
factorial = null;
|
||||
alert(anotherFactorial(4));
|
||||
|
||||
```
|
||||
答案
|
||||
我们知道,arguments.callee 是一个指向正在执行的函数的指针,因此可以用它来实现对函数
|
||||
的递归调用,例如:
|
||||
```
|
||||
function factorial(num){
|
||||
if (num <= 1){
|
||||
return 1;
|
||||
} else {
|
||||
return num * arguments.callee(num-1);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
11. 猴子吃桃问题:猴子第一天摘下若干个桃子, 当即吃了一半,还不过瘾,又多吃了一个; 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
|
||||
* 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。
|
||||
|
||||
|
||||
程序分析:采取逆向思维的方法,从后往前推断。
|
||||
|
||||
// 倒数第1 2 3 4 5 6 天
|
||||
// 桃数量1 4 10 22 46 94
|
||||
// 采用递归的方法
|
||||
|
||||
|
||||
|
||||
```
|
||||
// 返回第n天的桃子数量
|
||||
function getValue(n){
|
||||
if (n == 1) {
|
||||
return 1;
|
||||
}
|
||||
return (getValue(n - 1) + 1) * 2;
|
||||
}
|
||||
|
||||
for (int i = 1; i < 11; i++) {
|
||||
console.log("第" + i + "天\t" + getValue(i) + "颗");
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
BIN
考试/原题/js闭包20210408.docx
Normal file
BIN
考试/原题/js闭包20210408.docx
Normal file
Binary file not shown.
167
考试/原题/js闭包20210408.md
Normal file
167
考试/原题/js闭包20210408.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# js闭包
|
||||
## 填空
|
||||
1. 下面代码的执行结果为
|
||||
答案 -1
|
||||
|
||||
```
|
||||
function createComparisonFunction(propertyName) {
|
||||
|
||||
return function(object1, object2){
|
||||
var value1 = object1[propertyName];
|
||||
var value2 = object2[propertyName];
|
||||
|
||||
if (value1 < value2){
|
||||
return -1;
|
||||
} else if (value1 > value2){
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
let res=createComparisonFunction("num")({num:3,pri:8},{num:6,pri:12})
|
||||
console.log(res)
|
||||
|
||||
2. 下面代码的执行结果为
|
||||
答案 10 10
|
||||
```
|
||||
function createFunctions(){
|
||||
var result = new Array();
|
||||
for (var i=0; i < 10; i++){
|
||||
result[i] = function(){
|
||||
return i;
|
||||
};
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
let res=createFunctions()
|
||||
res[9]()
|
||||
res[3]()
|
||||
|
||||
```
|
||||
|
||||
|
||||
3. 下面代码的执行结果为
|
||||
答案 9, 3
|
||||
```
|
||||
function createFunctions(){
|
||||
var result = new Array();
|
||||
for (var i=0; i < 10; i++){
|
||||
result[i] = function(num){
|
||||
return function(){
|
||||
console.log(num)
|
||||
};
|
||||
}(i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
var res=createFunctions()
|
||||
console.log(res[9]())
|
||||
console.log(res[3]())
|
||||
|
||||
```
|
||||
|
||||
4. 下面代码的执行结果为
|
||||
答案为 The Window
|
||||
|
||||
```
|
||||
|
||||
var name = "The Window";
|
||||
var object = {
|
||||
name : "My Object",
|
||||
getNameFunc : function(){
|
||||
return function(){
|
||||
return this.name;
|
||||
};
|
||||
}
|
||||
};
|
||||
alert(object.getNameFunc()());
|
||||
|
||||
```
|
||||
|
||||
|
||||
5. 下面代码的执行结果为
|
||||
答案为 My Object
|
||||
|
||||
```
|
||||
|
||||
var name = "The Window";
|
||||
var object = {
|
||||
name : "My Object",
|
||||
getNameFunc : function(){
|
||||
var that = this;
|
||||
return function(){
|
||||
return that.name;
|
||||
};
|
||||
}
|
||||
};
|
||||
alert(object.getNameFunc()());
|
||||
|
||||
```
|
||||
|
||||
6. 下面代码的执行结果为
|
||||
答案 My Object My Object The Window
|
||||
```
|
||||
var name = "The Window";
|
||||
var object = {
|
||||
name : "My Object",
|
||||
getName: function(){
|
||||
return this.name;
|
||||
}
|
||||
};
|
||||
object.getName(); //"My Object"
|
||||
(object.getName)(); //"My Object"
|
||||
(object.getName = object.getName)(); //"The Window",
|
||||
|
||||
```
|
||||
解析
|
||||
第一行代码跟平常一样调用了 object.getName(),返回的是"My Object",因为 this.name
|
||||
就是 object.name。第二行代码在调用这个方法前先给它加上了括号。虽然加上括号之后,就好像只
|
||||
是在引用一个函数,但 this 的值得到了维持,因为 object.getName 和(object.getName)的定义
|
||||
是相同的。第三行代码先执行了一条赋值语句,然后再调用赋值后的结果。因为这个赋值表达式的值是
|
||||
函数本身,所以 this 的值不能得到维持,结果就返回了"The Window
|
||||
|
||||
|
||||
当然,你不大可能会像第二行和第三行代码一样调用这个方法。不过,这个例子有助于说明即使是
|
||||
语法的细微变化,都有可能意外改变 this 的值。
|
||||
|
||||
|
||||
7. 下面代码的执行结果为
|
||||
答案 7 12
|
||||
```
|
||||
function makeAdder() {
|
||||
return function(x) {
|
||||
return x + y;
|
||||
}
|
||||
}
|
||||
var add5 = makeAdder(5);
|
||||
var add10 = makeAdder(10);
|
||||
console.log(add5(2)); // 7
|
||||
console.log(add10(2)); // 12
|
||||
add5 = null;
|
||||
add10 = null;
|
||||
|
||||
|
||||
```
|
||||
|
||||
8. 下面代码的执行结果为
|
||||
答案 /Hello Joe
|
||||
|
||||
```
|
||||
function sayHello(name) {
|
||||
var text = 'Hello ' + name;
|
||||
var say = function() { console.log(text); }
|
||||
say();
|
||||
}
|
||||
sayHello('Joe')
|
||||
|
||||
```
|
||||
|
||||
9. 闭包的定义
|
||||
答案 闭包是指有权访问另一个函数作用域中的变量的函数
|
||||
|
||||
10. 闭包的作用
|
||||
答案 1. 闭包可以访问到局部变量
|
||||
2. 闭包可以保护里面的局部变量,使它们不会随着函数的结束而销毁
|
||||
BIN
考试/原题/前端js考试题 20210401.docx
Normal file
BIN
考试/原题/前端js考试题 20210401.docx
Normal file
Binary file not shown.
81
考试/原题/前端js考试题 20210401.md
Normal file
81
考试/原题/前端js考试题 20210401.md
Normal file
@@ -0,0 +1,81 @@
|
||||
13. 下面代码进行了几步操作 分别是什么操作
|
||||
code:
|
||||
```
|
||||
var x = 15;
|
||||
```
|
||||
A. 1 定义值为15的变量x
|
||||
B. 2 定义一个变量x; 把15作为值赋给x
|
||||
C. 3 var声明; 名字是x; 值=15
|
||||
D. 4 var声明; 名字是x; 值=; 15
|
||||
答案 B
|
||||
|
||||
|
||||
14. 读代码选结果
|
||||
code:
|
||||
```
|
||||
var a=3
|
||||
var b=0
|
||||
var sum=a+b
|
||||
console.log(sum)
|
||||
console.log(sum+"")
|
||||
console.log(a+b+"")
|
||||
|
||||
```
|
||||
A.3,30,30
|
||||
B.30,30,3O
|
||||
C.3,3,30
|
||||
D.30,30,30
|
||||
|
||||
答案 C
|
||||
|
||||
15. 读代码 选结果
|
||||
code
|
||||
```
|
||||
var a=9
|
||||
var b=1
|
||||
console.log(--a)
|
||||
console.log(a--)
|
||||
conosle.log(b--)
|
||||
|
||||
```
|
||||
A. 8,8,1
|
||||
B.8,7,0
|
||||
C.9,1,1
|
||||
D.8,8,报错
|
||||
|
||||
答案 D
|
||||
|
||||
16. typeOf 10+''的结果是
|
||||
A. String
|
||||
B. Number
|
||||
C. undefined
|
||||
D.null
|
||||
答案 A
|
||||
17. var a=2 a>3&&a<5 的结果为
|
||||
A. true
|
||||
B.false
|
||||
C.2
|
||||
D.3
|
||||
答案 B
|
||||
18. 定义函数的关键字是
|
||||
A.def
|
||||
B.函数
|
||||
C.function
|
||||
D.func
|
||||
19. 下面定义的函数结构错误的是
|
||||
A.function a(){}
|
||||
B.var b=function(){}
|
||||
C.()=>{}
|
||||
D.functian a(){}
|
||||
答案 D
|
||||
|
||||
9. ```25%6*(10-4) ```执行结果为:
|
||||
10. var a=age<18?'不能进入':"欢迎光临" 的执行结果为
|
||||
11. 读代码写执行结果
|
||||
code
|
||||
```
|
||||
function ask(){
|
||||
var question="你的名字是什么
|
||||
}
|
||||
console.log(question)
|
||||
```
|
||||
Reference in New Issue
Block a user