每日前端签到(第120天)

2019-12-15  本文已影响0人  拿着号码牌徘徊
第120天(2018-12-02)

题目一:
button.type="reset" ,重置按钮,即清除表单数据。与form表单配合使用。demo如下:

<form action="form_action.asp" method="get">
First name: <input type="text" name="fname" />
Last name: <input type="text" name="lname" />
<button type="submit" value="Submit">Submit</button>
<button type="reset" value="Reset">Reset</button>
</form>
题目二:
管理平台导航栏和内容的设置
响应式的布局
题目三:
你们从哪里 copy 的 JS 原始数据类型存放在栈上的?好奇去搜索了一下,发现果然各种 CSDN 博客乱说一气。

如果 JS 基本类型都保存在栈上,那怎么解释调用栈弹出后,局部变量仍然可以被闭包访问?还有说 JS string 也是在栈内存的,又说栈上的变量都是固定分配大小的,are you sure? 从 HTTP response 获得的一段字符串会在栈上?从 Blob / ArrayBuffer 里读到的字符串怎么固定分配大小?

你讲值类型和引用类型可以,但是不要讲堆内存和栈内存。很反感把堆内存和栈内存的概念引入 JS 中,因为这些概念在 JS 中根本不适用。C/C++有这种概念,因为他们直接在操作系统中运行,操作系统给程序分配内存的时候确实是分栈内存还是堆内存的,他们标准就有 sizeof 这种求变量大小的操作符,有分配 / 释放内存的 API。Java 语言虽然也有 GC ,但也分这两种内存,但这个时候,对于 Java 程序本身来说内存是 JVM 来管理的,所谓的栈内存堆内存是 JVM 定义下的,并不是操作系统管理下的概念。

回头说 JS 的情况,ES 标准从来没有提到 JS 中哪些数据类型要以栈内存的形式存储,哪些是堆内存存储。ES6 标准里提到的是执行上下文(execution context)、词法环境(Lexical Environment)、变量环境(Variable Environment)、环境记录(Environment Records)。环境记录就是那个用来保存标识符和变量值的映射。那请问这个变量值是堆内存还是栈内存呢?你说 string 是基本类型所以是分配在栈上的,你去了解一下 V8 对 string 的优化,你的内存图恐怕没那么简单能画对。原始数据类型还包括一个 Symbol 吧,那请问一个 symbol 变量在栈上的内存是怎样的?占几个字节?

总结:你根本不需要去探究 JS 中的变量是保存在堆里还是栈里,非要说那就是全部都是在堆里。
题目四:
题目有歧义,移动端与web前端开发这两个概念交叉了。
软件开发按设备类型可分为移动端与PC端等,按开发技术可以分为web、原生、hybird三种。web前端包括了web移动端与web PC端,题目应该问的是移动端下原生开发和web开发的区别。

原生开发能使用设备硬件的更多能力,能带来更好的使用体验
web开发具有优秀的跨平台能力
原生应用更新需要经过应用商店审核发布,用户手动下载更新;web应用更新则无这些繁琐的流程

上一篇下一篇

猜你喜欢

热点阅读