JavaScript 课本中有一道作业题题,帮忙做一下

一道关于JavaScript变量作用域的面试题
作者:ShineJaie
字体:[ ] 类型:转载 时间:
这篇文章主要为大家介绍了一道关于JavaScript变量作用域的面试题,如何解决这道面试题,感兴趣的小伙伴们可以参考一下
小编觉得这道题对理解JavaScript 作用域还是很有帮助的,特此又把自己的解题思路梳理了一遍,希望对其它人有所帮助。
首先看下面试题:
var arr = [1, 2, 3];
for (var i = 0, j = arr[i++];) {
console.log(j);
console.log('---------');
console.log(i);
console.log('---------');
console.log(j);
console.log('---------');
在解题前,我们先回顾下 JavaScript 中,变量域相关的知识。
全局变量(Global)
全局变量是指在任何地方都可以访问的变量,有两种情况
在 function 外面声明,不论是否用 var 关键字
在 function 里面声明,不使用 var 关键字,当然声明的语句必须被执行才可以
局部变量(Local )
局部变量只能在被声明的 function 内部才能访问
在 function 里面声明,使用 var 关键字
两点要注意的地方
先看代码:
alert(i); // 输出 undefined
for (var i = 0; i & 1; i++){};
alert(i); // 输出1
JavaScript 不存在语句作用域,在语句内定义的变量会扩散到语句外边, 例子中 i 在 for 语句中声明,但是在 for 语句的外面任然可以访问
在 for 语句之前就可以访问到 i ,只不过这时候还没有被赋值
开始我们的解题
i++ 是在 i 使用后再自加:
第一次执行时,j=arr[0],之后 i=1,console.log(j) 输出 1
第二次执行时,j=arr[1],之后 i=2,ocnsole.log(j) 输出 2
第三次执行时,j=arr[2],之后 i=3,ocnsole.log(j) 输出 3
第四次(不符合 for& 条件),j=arr[3] 为 undefined,之后 i=4,ocnsole.log(j) 没有输出,退出 for 循环
for 语句执行结束后,console.log(i) 由上分析可知输出 4,console.log(j) 输出 undefined
最后输出结果为:
针对上面的分析和结果,想必大家都已经搞清楚了吧,然后我们开始举一反三吧。
借题改题一
var arr = [1, 2, 3];
for (var i = 0, j = arr[++i];) {
console.log(j);
console.log('---------');
console.log(i);
console.log('---------');
console.log(j);
console.log('---------');
借题改题二
function xxx() {
var arr = [1, 2, 3];
for (var i = 0, j = arr[i++];) {
console.log(j);
console.log('---------');
console.log(i);
console.log('---------');
console.log(j);
console.log('---------');
报错:Uncaught ReferenceError: i is not defined
为大家就分享到这,希望对大家理解JavaScript作用域有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具谁帮忙做一下这15道java选择题,谢谢!_百度知道
谁帮忙做一下这15道java选择题,谢谢!
|指两输入项之间的一个选择112、分析下面的JavaScript代码段,经过运算后m的值为( )x=11;y=&quot、status
C;))、10- 10-2
B、分析下面的JavaScript代码段、下列有关函数的说法正确的是( )
A、10- 10-
C、histroy对象记录了用户在一个浏览器中浏览过的urls
B;010--&quot、下面( )不是浏览器对象window的属性
A.write(emp、3
C、010 010-
C、selectedIndex
C;更改变红色显示的是( )
A、分析下面的JavaScript代码段。A;hello&quot,也可以没有返回值如果没有返回值,包含关于当前url的地址信息
C、、函数名称是不区分大小写的,也可以将此大括号放到下一行
B,必须使用return语句111、option
D;hello&110;red&quot,输出结果是( )var s1=&
&quot.fontcolor(&quot,4)+ &quot、3
B,可以实现将文本中的所有&quot100、2
D、分析下面的JavaScript代码段;.length)、下列选项中不是javascript基本数据类型的有( )
A,鼠标单击提出交按钮时可以触发( )事件
A.indexOf(&quot.substr(1;hello&quot、1105: var mystring=&quot、onEnter
B;););hello&,输出的结果是( )emp=new Array(5);)、当表单各项添写完毕;
C、int index=、函数可以有多个参数;a=、程序报错115;a =)、int index=red&quot.length),输出结果是( )var s1 = new String(&quot,输出结果是( )var mystring = &quot?代表0次或1次匹配前面的子表达式
B、location对象相当于ie浏览器中的地址栏、下列选项中、在函数的第一行还包括一个大括号, &quot、+代表1次匹配前面的子表达式
C.substring(1、t109;)
D;;i;red&quot、history
B、5114、location对象是window对象的子对象107、11
C;hello&#47.write(s1.indexOf(&quot.write(a);red&emp[1]=1emp[2]=2document、函数可以有返回值;
A;am&quot、分析下面的JavaScript代码 、10- 10-9113、multiple104,表单中的input元素的(
)属性用于指定表单元素的名称.substr(index);;
A; str. fontcolor(&
D、onMouseOver102,这是一种常见的风格.write(a)、event
D、onSubmit
C、下列选项中关于javaScript浏览器对象的说法错误的是( )
D.fontcolor(&quot、value
B、5108、10-9 10-
D,4)+ &quot.substr(1;I am a student&quot、^匹配输入字符串的开始位置
D.fontcolor(&quot.charAt(9);hello&22&quot、33
B;document、str、location对象是history对象的父对象
D.write(s1、disabled
B、name106;I am a student&quot、010- 010101、10-9 10-9
C、I am a st
B、title103,每个参数之间用分号隔开
C;<br>&).replace(/输出结果是( )
A.substr(index.indexOf(&m=x+y.write(s1、在HTML中、分析下面的JavaScript代码段.substring(1、&quot、udent
D、下列选项可以用来检索下拉列表中被选定的选项索引值的是( )
A、10-2 10-
B,4));hello&quot、onMouseDrag
D、Boolean
D、下列关于正则表达式模式中的有关字符的描述错误的是( )
C,所以err()和Msg()表示的是同一个函数
B;+ s1、表达式123%7的计算结果是( )
提问者采纳
函数的参数用逗号隔开、D
重复一次或更多次
112。要使结果为33、A
感觉比较像;)
115,不是javascript的辛苦答完了;33&#39100,如用parseInt(&#39,这个是java的,没有返回值不需要return
弱类型 并不是没类型的意思,不再解释
113、B 英文意思就可以看出
数组长度为5 不会变
102,必须将字符串转为数值型先、没有class类型,第二个是长度。(substring第二个参数为结束位置)
同100题、C
整除后的余数
第九个字符
没这个说法
107,空格第1个、C
首先函数是区分大小写的、B
这个好像是这么回事
103,将hello字符替换为一个带样式的元素
101,所以直接选C,am第2个
I是第0个、C
substr函数第一个参数是起始位置,给分吧
提问者评价
谢谢,虽然你回答的有点晚
其他类似问题
为您推荐:
java的相关知识
其他2条回答
这是javascript,而不是java。
太多了,要是给25分就帮你看看了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁JavaScript 一道作业题,帮忙做一下_百度知道
JavaScript 一道作业题,帮忙做一下
null&/var t = type({}) / t===&) //number&regexp&/ t===&undefined&)) /date&var t = type(new String(&number&使用举例如下;var t = type(undefined) &#47,语法如下:var t = type(obj);var t = type([]) / t===& t===&) /var t = type(& t===&/var t = type(/var t = type(null) /d/abc&var t = type(new Number(1)) // t===&\var t = type(true) /var t = type(new Date) /object& t===&quot:var t = type(1) /abc&//string& t===&boolean&// t===& t===&var t = type(function(){}) //string&// t===&function& t===&array&quot实现type函数用于识别标准类型和内置对象类型
'(o&o&';(o& return&type(o){ if&date' if&'Number)
return&(typeof&array'number'instanceof&String)
return&Date)
return&;(o&' if&RegExp)
return&===&;';instanceof&(o&''null)
return& if&; if&(o&'null' if& if&;)
return&instanceof&nbsp!==&instanceof&o;object'typeof&Array)
return&instanceof&regexp'string'(o&object&#39function&nbsp
其他类似问题
为您推荐:
javascript的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁这道题用javascript中的for循环怎么做?宁外用for循环表示出1+2+3+4+5+6+7+8+9+10=55怎么表示?
LLRRR00045
for(var i = 0; i & 11; i++) {
for(var a = 0; a & a++) {
document.write("* ");
document.write("把这里换成 HTML 的 br 标签");}var sum = 0;for(var n = 1; n & 11; n++) {
为您推荐:
扫描下载二维码

我要回帖

更多关于 又一道作业题不会做了 的文章

 

随机推荐