part1_模块二作业

简答题

一、请说出下列最终的执行结果,并解释为什么。

var a = [];
for(var i = 0; i<10; i++){
	a[i] = function(){
		console.log(i)
	}
}
a[6]()
解答: 
10  i为全局变量经过for循环以后i变成了10打印的结果为全局的i所以是10

二、请说出下列最终的执行结果,并解释为什么。

var tmp = 123;
if(true){
	console.log(tmp)
	let tmp
}
解答:
 报错 在块级作用域中用let声明的变量,无法变量提升应先定义后使用

三、结合ES6新语法,用最简单的方式找出数组中的最小值。

var arr = [12, 34, 32, 89, 4]
解答:
console.log(Math.min(...arr))

四、请详细说明 var, let, const 三种声明变量的方式之间的具体差别。

解答:
在这里插入图片描述
五、请说出下列代码最终输出的结果,并解释为什么。

var a = 10;
var obj = {
	a: 20,
	fn () {
		setTimeout(() => {
			console.log(this,this.a)
		})
	}
}
obj.fn()
解答:
20 箭头函数不会改变this的指向所以this的指向还是obj

六、简述 Sybol类型的用途述。

解答:
 - 解决扩展对象,属性名冲突问题  
 - Symbol 模拟实现私有成员

七、说说什么是浅拷贝,什么是深拷贝。

解答:

  • 浅拷贝:拷贝的是内存地址,相当于赋值当b改变时a也会改变
  • 深拷贝:拷贝对象的具体内容,内存地址是自主分配的,拷贝结束之后俩个对象页互相不影响,互不干涉

八、请简述 TypeScript 与 JavaScript 之间的关系。

解答:
TypeScript是 JavaScript 的超集,包含了 JavaScript 的所有元素,
在TypeScript中可以运行JavaScript代码。

九、请谈谈你所认为的 TypeScript 优缺点。

解答:

优点

  • 增强代码的可读性和可维护性,强类型的系统
  • 自动转换新特性,可以立即使用新特性
  • 任何一种 JavaScript 运行环境都支持
  • 生态更加健全、更完善

缺点:

  • 语言本身多了很多概念,增加学习成本
  • 项目初期, TypeScript 会增加一些成本

十、描述引用计数的工作原理和优缺点。

解答:

引用计数

  • 核心思想:设置引用数,判断当前引用数是否为 0
  • 引用计数器
  • 引用关系发生改变时修改引用数字
  • 引用数字为 0 时立即回收

引用计数优点

  • 发现垃圾时立即回收
  • 最大限度减少程序暂停

引用计数缺点

  • 无法回收循环引用的对象
  • 时间开销大

十一、描述标记整理算法的工作流程。

解答:

  • 遍历所有对象,将当前活动可达对象标记
  • 将当前活动对象移动,变成连续的位置
  • 清除没有标记对象
  • 回收相应的空间

十二、描述 V8 中新生代存储区垃圾回收的流程。

解答:

  • 回收过程采用复制算法 + 标记整理
  • 新生代内存区分为二个等大小空间
  • 使用空间为 From,空闲空间为 To
  • 活动对象存储于 From 空间
  • 标记整理后将活动对象拷贝至 To
  • From 与 To 交换空间完成释放
  • 如果拷贝的过程中一轮GC还存活的就需将新生代对象移动至老生代
  • To 空间的使用率超过 25%也需要将新生代对象移动至老生代
你可以使用以下代码来在Python中使用Abaqus模块: ```python from abaqus import * from abaqusConstants import * from caeModules import * # 创建新模型 myModel = mdb.Model(name='MyModel') # 创建新部件 myPart = myModel.Part(name='MyPart', dimensionality=THREE_D, type=DEFORMABLE_BODY) # 创建节点 myPart.Node(coordinates=(0.0, 0.0, 0.0)) myPart.Node(coordinates=(1.0, 0.0, 0.0)) myPart.Node(coordinates=(1.0, 1.0, 0.0)) myPart.Node(coordinates=(0.0, 1.0, 0.0)) myPart.Node(coordinates=(0.0, 0.0, 1.0)) myPart.Node(coordinates=(1.0, 0.0, 1.0)) myPart.Node(coordinates=(1.0, 1.0, 1.0)) myPart.Node(coordinates=(0.0, 1.0, 1.0)) # 创建单元 myPart.Element(nodes=(1, 2, 3, 4), type=HEX8) myPart.Element(nodes=(1, 2, 6, 5), type=HEX8) myPart.Element(nodes=(2, 3, 7, 6), type=HEX8) myPart.Element(nodes=(3, 4, 8, 7), type=HEX8) myPart.Element(nodes=(4, 1, 5, 8), type=HEX8) myPart.Element(nodes=(5, 6, 7, 8), type=HEX8) # 创建新步骤 myModel.StaticStep(name='MyStep', previous='Initial') # 创建新荷载 myModel.ConcentratedForce(name='Load', createStepName='MyStep', region=myPart.sets['Set-1'], cf1=100.0, distributionType=UNIFORM, field='', localCsys=None) # 创建新边界条件 myModel.DisplacementBC(name='BC', createStepName='MyStep', region=myPart.sets['Set-2'], u1=0.0, u2=0.0, u3=0.0, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', localCsys=None) # 提交作业 myJob = mdb.Job(name='MyJob', model='MyModel') myJob.submit() myJob.waitForCompletion() ``` 这段代码创建了一个简单的八节点立方体有限元模型,并施加了一个均匀分布的荷载和一个边界条件。你可以根据自己的需要修改这个模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值