typeof null === 'object' // true
null instanceof Object // false
// with 和 try/catch 的区别?
with 语句, 会向作用域链前端添加指定的对象;
catch语句, 会创建一个新的变量对象,这个变量对象包含要抛出的错误对象的声明;
变量声明:
注意: 未经声明而初始化变量时Javascript 编程中一个非常常见的错误,会导致很多问题。
为此,读者在初始化变量之前一定要先声明变量。在严格模式下,未经声明就初始化变量会报错。
什么是块级作用域?
由最近的一对包含花括号{}界定的。 function 、if 、 while 甚至连单独的块也是let 声明变量的作用域。
我如果想让整个对象都不能修改? 怎么做呢?
Object.freeze(obj)
// 如:
obj1 = {
internal: {}
};
Object.freeze(obj1);
obj1.internal.a = 'aValue';
console.log(obj1.internal.a) // aValue
// 这没有浅冻结。
// 被冻结对象自身的所有属性都不可能以任何方式被修改。任何修改尝试都会失败,无论是静默地还是通过抛出TypeError异常
// 如果一个属性的值是个对象,则这个对象中的属性是可以修改的,除非它也是个冻结对象。数组作为一种对象,被冻结,其元素不能被修改。没有数组元素可以被添加或移除。
// 深冻结函数.
function deepFreeze(obj) {
// 取回定义在obj上的属性名
var propNames = Object.getOwnPropertyNames(obj);
// 在冻结自身之前冻结属性
propNames.forEach(function(name) {
var prop = obj[name];
// 如果prop是个对象,冻结它
if (typeof prop == 'object' && prop !== null)
deepFreeze(prop);
});
// 冻结自身(no-op if already frozen)
return Object.freeze(obj);
}
// 那什么是垃圾回收呢?
// 答: 我个人认为, 垃圾回收就是执行环境负责在代码执行时管理内存。
// 垃圾回收的基本思路?
// 答: 确定那个变量不会再使用, 然后释放他占用的内存。这个过程是周期性的,即垃圾回收程序每隔一定时间(或者是代码执行过程中2个预定的手机时间)就会自动运行。
// 垃圾回收的策略?
// 1. 标记清除
// 先给当前不使用的值加上标记。 再回来回收他们的内存。
// 2. 引用计数
// 需要记录值引用了多少次。使用一次减一, 当值为0的时候, 回收他们。
// 代码如果存在循环引用时会出现问题。
// 3. 解除变量的引用不仅可以消除循环引用,而且对垃圾回收也有帮助,为促进内存回收,全局对象,全局对象的属性和循环引用都应该不需要时解除引用。
// 什么是内存泄漏?
1. 函数会被多次引用的情况下
2. 定时器如果一运行,占用着外面的属性。垃圾回收程序就不会清理外部的变量。
3. 闭包。
// 如何解决内存泄漏?
// 1. 定时器,不使用的时候清除。
// 2. 把不使用的函数设置成null
// Date
Date.parse("May 23, 2019"); // 方法接受一个表示日期字符串参数, 尝试将这个字符串转换为表示该日期的毫秒数。
Date.UTC('年','月','日','时','分','秒') // Number
// 如何计算函数执行时间。
// 起始时间
let start = Date.now();
// 调用函数
doSomething();
//结束时间
let stop = Date.now();
result = stop - start;
// 字符串位置方法
let stringValue = "hello word";
conosole.log(stringValue.indexOf('o'))
conosole.log(stringValue.lastIndexOf('o'))
let message = 'barsssarsssmm';
message.includes('bars'); // true
message.trim() // 删除前后字符串空格
message.repeat(2) // 接受一个整数参数, 表示将字符串复制多少次
// 字符串迭代与解构
for (const c of 'abcdef') { // for - of 会按顺序访问每个字符
console.log(c)
}
// 解构操作符
console.log([...message])
// 字符串大小写转换
1. toLowerCase() // 小写
2. toLocaleLowerCase() // 如果不知道代码设计什么语言, 最好使用地区特定的转换方法 小写
3. toUpperCase() // 大写
4. toLocaleUpperCase() // 特定地区 大写
// 字符串替换
replace()
replaceAll()
// 匹配所有对应的'sm', 替换成 gm
replace(/sm/g,'sssssss')
六章前-笔记
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 人类做为一个全新的,超越了以往到现在所有其他物种的进化模式的物种,对地球历史造成的影响不仅仅局限于人类本身的发展。...
- 是什么使得人类这一物种如此的独特?什么是人类进化"最初的推动力"?从个体层面上很难看出人与黑猩猩的差异-----二...