吕梦扬
2014013452
lmy1229@126.com
'undefined'
原因: 代码中调用arguments[0]
时,处于匿名自启动的函数的作用域中,而在这个作用域中并没有定义num
这个变量.因此返回'undefined'
.若要使得函数能够正常返回Number
,需要将代码改为
(function() {
return typeof arguments[0].call(func);
})(func.getNum);
'undefined'
new
运算符会产生一个新的对象,并将其设置为上下文作为调用的构造函数的作用域. 但是在构造函数中返回了foo
,是一个引用类型的实例.在这种情况下脚本引擎会将返回的引用类型作为new
语句的返回值. 因此new foo;
语句的返回值就是foo
函数,而不是一个新的对象.new new foo;
语句也类似.在foo
这个函数的作用域中,x并没有定义.因此返回undefined
.'function'
function bar(){...}
和function foo(){...}
都是显示的函数声明,因此会被预编译. 虽然var foo = '11'
这一行也会被预编译,但是只是为foo
变量留出空间,并没有初始化.因此foo
的内容还是函数.在执行bar()
时,由于之后对于foo
的赋值语句还没有执行,因此返回的foo
是函数类型的.3
和 1
go()
在全局作用域中运行,因此返回全局作用域中的x = 3
, 而函数foo.baz.bar()
在foo.baz
作用域中运行,因此返回foo.baz
中的x = 1
'undefined'
aaa
中{ test: 1 }
的大括号{
没有和return
写在同一行,且return
是一个合法的语句,因此,js会认为return
是单独的一个语句,因此函数不返回任何值,于是typeof aaa()
获得了undefined
预测比赛结果的基本思路就是模拟比赛的过程, 即模拟两个队伍进行比赛的过程,然后胜者晋级,败者淘汰. 但是由于题目中要求比赛胜利概率与实力成正比,而不是通过比较实力大小直接决出胜负,因此可能会出现很多情况,不同情况出现的概率不同.为了更加直观且便捷地展示比赛结果,以及各个结果出现的可能性,引入广义队的概念. 广义队的结构如下
var team = {
team1: prob1,
team2: prob2,
...
}
其中team1...
表示队伍的名称,prob...
表示该队伍出现在这个广义队中的可能性.
function predict(abil, sched, country)
.predict
接受3个参数:
abil
: 用户心目中的队伍实力评分. 是一个objectsched
: 赛程表, 是一个数组. 用于扩展程序.country
: 用户想要求胜率的队伍.
predict
函数接受的第2个参数sched
为比赛的赛程表,是一个数组,该函数将sched
数组两两比赛晋级,然后将比赛的结果继续两两比赛晋级,直到最终只有1个队伍存在(广义队).这个队伍就是最终比赛的结果.0.0625
. 实际测试结果确实为0.0625
0.9^4 = 0.6561
. 实际测试结果确实为0.6561
此题比较简单,直接通过javascript
函数中的arguments
和typeof
来判断参数类型,根据不同的类型进行不同的处理.
采用了两种方法:
sort()
函数将两个集合分别排序,然后使用类似于归并的思想查找在集合2而不在集合1中的元素. 算法复杂度为O(nlog(n)+mlog(m))将算法导论中的基本排序算法(冒泡,插入,选择排序)用JavaScript实现一遍, 分别为bubble_sort
, insertion_sort
和selection_sort
. 这些函数均支持在第二个参数处传入一个比较函数来自定义排序的表现.
MathJax.js
.由于这个库本身比较大,因此采用了网络加载的形式.请在联网的情况下打开本文档,否则可能出现公式无法正常显示的问题.js
文件尾部的// for testing
部分.