js中变量重复声明
测试题先做道题: 12345(function(num) { console.log(num); var num = 10; function num() {}})(); 知道 js 的变量声明和方法声明提升特性的同学应该都知道,输出肯定不会是 10. ...
阅读更多
Generator笔记
语法1234567function* helloWorldGenerator() { yield "hello"; yield "world"; return "ending";}var hw = helloWorldGenerator(); 第一次调用时不执行 当第一次 ...
阅读更多
js中对数据类型的总结及判断数据类型的各种方法及优缺点
js 中的数据类型js 中只有六种原始数据类型和一个Object: Boolean Null Undefined Number String Symbol (ECMAScript 6 新定义) Object 大家认真记清这个描述,不要到时候把 Array、Date 都当成 js 的数据类型就 ...
阅读更多
原生javascript实现观察者模式
ES5 自定义方式12345678910111213141516171819202122232425262728293031323334353637383940414243function Pub() { this.handler = {};}Pub.pro ...
阅读更多
javascript的delete属性
总结 delete 只是断开了属性和宿主当关系,而不会去操作宿主中的属性。[^1] delete 只能删除自有属性,不能删除继承属性,所以 protorype 上的属性不能通过删除对象上的属性删除《Javascript 权威指南》6.3 章 场景当需要删除对象的属性时,我们会使用delete关键字 ...
阅读更多
webkit技术内幕笔记

为什么说函数是一等公民

因为函数能够当做参数或返回值进行传递。

动态类型语言

Javascript语言的另一个重大特点就是,它是一种无类型语言,或者说是动态类型语言。相比较而言,C++或者 Java 等语言都是静态类型语言,它们在编译的时候就能够知道每个变量的类型。但是,JavaScript 的语言特性让我们没有办法在编译的时候知道变量的类型,所以只能在运行的时候才能确定,这导致 JavaScript 语言的规范面临着性能方面的巨大压力。在运行时计算和决定类型,会带来很严重的性能损失,这导致了 JavaScript 语言的运行效率比 C++或者 Java 都要低很多。 ###为什么这样会比静态类语言性能差
因为静态类型语言在编译时,就已经知道了参数的类型,并根据类型生成了本地代码;所以运行的时候从本地代码中读取就比较快。
而 javascript 是动态类型语言,只有当运行的时候才去编译、运行,上面的工作才开始做,这样效率当然会比较低了。

阅读更多
web前后端漏洞分析与防御技巧--笔记
相关工具nodemon代替 node,启动的服务,如果修改后会自动编译启动,无需每次手动启动。 jspm前端包管理工具,npm 是 node 的包管理工具,服务端的。 XSS全称是:Cross Site Scripting,(跨站脚本攻击),为什么不叫 CSS,因为 CSS 是样式的缩写,cross ...
阅读更多
回顾冒泡算法
刚开始学编程的时候就学了冒泡,所以一直觉的是很简单的东西,但你真的能随手写出来吗?真的还记得原理吗? 第一种实现这是根据核心思想写出来的,后来和书上的一对,写法不同,但是原理和结果是一样的。 123456789101112131415let arr = [1, 3, 6, 4, 5, 2, 4, 8 ...
阅读更多
《啊哈算法》纸盘游戏-小猫钓鱼-js版
结论我的输出结果和书上不一致,在网上查了下,有的人士和我的结果一样,我把每一步都打印出来并看了结果,我的过程和结果是没问题的。 游戏规则 将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌 ...
阅读更多
快速排序算法-JavaScript版
原理比如有一个这样的数组 1let arr1 = [4, 3, 1, 5, 2, 6, 5, 3, 8, 9, 6, 7]; 从数组中找一个基准数,通常为第一个元素,比如 4,然后把数组中的所有大于基准数的都放到右边,小于的都放到左边。 第一轮结束后,虽然左边都是小于基准数的,右边都是大于基准数的 ...
阅读更多