读书笔记(javascript 高级程序设计)

一. 数据类型:

1. undefined: 未声明和未初始化的变量,typeof 操作符返回的结果都是 undefined;(建议未初始化的变量进行显式赋值,这样当 typeof 返回 undefined 时就知道是未声明了,帮助定位问题)

2. null:建议,将即将保存但还未真正保存对象的变量,赋值为 null;

3. number: 保存浮点数需要的内存空间是保存整数值的两倍,因此 ECMAScript 会不失时机的将浮点数值转换为整数值;

4. NaN: isNaN() 用于确定其参数是否“不是数值”;eg: isNaN("blue") —— true (因为不是数值);

附: typeof 可以判断的类型:undefined/boolean/string/number/function;

5. parseInt(): 第二个参数可以指定进制,使参数按照指定进制转换,如不指定进制,则按照十进制转换;

 parseFloat() 只解析十进制值,他没有第二个参数指定基数的用法;

6. 转换为字符串: toString() 和 String();(null 和 undefined 没有 toString() 方法)

String() 可将任何类型的值转换为字符串; 转换规则如下:

如果值有 toString() 方法,则调用该方法(没有参数)并返回相应的结果 —— 如果值是 null,则返回 “null” —— 如果值是“undefined”, 则返回“undefined”;

7. 前 ++ 和后 ++:

前++和前--:eg:var age = 28; --age;//28(--age相当于 age = age - 1;age与(--age)整体的值也会变)

后++和后--:eg:

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; //22 (age的值减1,(age--)整体的值不会变)
var num4 = num1 + num2; //21

8. 位运算符: 可以提高性能(详见收藏);

9. == 和 !=: 比较 null 与 undefined 时,不能将它俩转换为任何值;

10. switch语句:switch语句在比较值时使用的是全等操作符,因此不会发生类型转换(如,“10” 不等于 10);

 二. 变量、作用域和内存问题:

1. 函数传参:参数只能按值传递:当参数为基本数据类型时,直接进行复制操作;当参数为引用数据类型时,将引用地址进行复制给形参,如果在函数内部重新对引用类型的参数进行赋值,此时修改的引用变量参数为局部变量,这个局部的引用对象会在函数执行完毕后立即被销毁;(传参是复制,不能理解为是实参替换形参);函数参数也被当作变量来对待,因此其访问规则与执行环境中的其他变量相同(局部变量,作用域链)。 

 2. 执行环境及作用域:

(1)延长作用域链:虽然执行环境的类型总共只有两种——全局和局部(函数),但还是有其他办法来延长作用域链。这么说是因为有些语句可以在作用域链的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。在两种情况下会发生这种现象。具体来说,就是当执行流进入下列任何一个语句时,作用域链就会得到加长:try-catch 语句的 catch 块;with 语句。

这两个语句都会在作用域链的前端添加一个变量对象。对 with 语句来说,会将指定的对象添加到作用域链中。对 catch 语句来说,会创建一个新的变量对象,其中包含的是被抛出的错误对象的声明。

(2)垃圾回收机制:

  • 标记清除”是目前主流的垃圾收集算法,这种算法的思想是给当前不使用的值加上标记,然后再回收其内存。
  • 解除变量的引用不仅有助于消除循环引用现象,而且对垃圾收集也有好处。为了确保有效地回收内存,应该及时解除不再使用的全局对象、全局对象属性以及循环引用变量的引用。

 

转载于:https://www.cnblogs.com/momo798/p/7677220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于gcc扩展中的宏定义中用 # 和 ##

关于gcc扩展中的宏定义中用 "#" 和 "##"今天测试了宏定义中的 "#" 和 "##" 的区别。 结果如下: "#" 代表和一个字符串相连接 "##" 代表和一个符号连接,符号可以是变量,或另一…

java 年计算_java实现计算某年某月的天数

在计算某年某月的天数时,需要注意平年闰年。分析:闰年具体的判定方法就要看它的判定条件:四年一闰 , 百年不闰 ,400年再闰。而计算该年该月的天数,又分大月和小月,特殊月份2月之分。(视频教程推…

添加自定义菜单,报错40155

2019独角兽企业重金招聘Python工程师标准>>> 提交的json中,某个自定义菜单对应的URL访问是有问题的,请挨个检查一下。 转载于:https://my.oschina.net/selly1025/blog/1551496

gcc编译流程及中间表示层RTL的探索

gcc编译流程及中间表示层RTL的探索收藏新一篇: 解读VC编程中的文件操作API和CFile类 | 旧一篇: Effective Item21 尽可能使用const 内容摘要 本文将以 C 语言为例,介绍 gcc 在接受一个 .c文件的输入之后,其前端是如何进行处理并得到一个中间表示并转交给…

【bzoj2132】圈地计划 网络流最小割

题目描述 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地。据了解,这块土地是一块矩形的区域,可以纵横划分为NM块小区域。GDOI要求将这些区域分为商业区和工业区来开发。根据不同的地形环境,每…

python爬虫爬取数据如何将br去掉_Python怎么去除爬取下来的网站中的一些转义字符串 - 收获啦...

基本方法其实用python爬取网页很简单,只有简单的几句话这样就可以获得到页面的内容。接下来再用正则匹配去匹配所需要的内容就行了。但是,真正要做起来,就会有各种各样的细节问题。2.登录这是一个需要登录认证的网站。也不太难,只…

Linux基础

Linux的特点: 系统版本:常见的有debian、Redhat更适合做服务器,更安全和稳定,Ubuntu唯一的优势就是图形界面好,centos目前被redhat收购,红旗已经倒闭。 1、免费的/开源的;2、支持多线程/多用户&…

GCC的编译和调试--入门介绍

编译与调试1.1编译的概念和理解在进行C程序开发时,编译就是将编写的C语言代码变成可执行程序的过程,这一过程是由编译器来完成的。编译器就是完成程序编译工作的软件,在进行程序编译时完成了一系列复杂的过程。1.1.1程序编译的过程在执行这一…

A* a=new B ,会不会产生内存泄露了,露了B-A的部分?

A* anew B ,delete a;会不会产生内存泄露了,露了B-A的部分。其中B为A的子类 析构函数在下边3种情况时被调用:1.对象生命周期结束,被销毁时;2.delete指向对象的指针时,或delete指向对象的基类类型指针,而其基…

spring 第一天:1015

对象加强的三种方法:1/继承2/装饰着模式3/动态调用 2:装饰着模式:就是就是1-先建一个基类 ,如咖啡类 。味道很苦2- 再建一个类配料类 也就是说是所欲配料种类的父类。然后写多配料子类个子类继承配料类,。3-子类三个步…

java public 继承_java继承问题

代码:父类:public class Father {public Father() {System.out.println("基类构造函数{");show();new a();System.out.println("}");}public void show() {System.out.println("基类----show");}public class a {public a…

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec Memory Limit: 64 MBDescription 正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序。她们甚至也不能通过仍硬币的方式。 所以她们通过"round number&q…

Optimizing Code with GCC

现在的编译器越来越聪明,功能越来越强,从简单的函数内联,到复杂的寄存器分析,一系列代码革命使程序运行得越来越快。大多数时候,更快比更小重要,因为磁盘空间和内存都变得便宜了。但是在嵌入式系统里&#…

QTP的那些事--操作excel的函数

1: QTP Excel函数 操作EXCEL 数据表格 表单 编辑EXCEL 工作表 2: Dim ExcelApp As Excel.Application 3: Dim excelSheet As Excel.worksheet 4: Dim excelBook As Excel.workbook 5: Dim fso As scrīpting.FileSystemObject 6: 7: ******************…

java-生产者消费者模式

经常会有公司叫我们手撕代码,比如网易,阿里,那我们是不是该掌握下呢。下面这段代码来自《现代操作系统》进程与线程P49页。 public class ProducerConsumer {public ProducerConsumer() { }private static final int N 100;static Producer …

yum查询已经安装mysql_通过yum安装mysql

在linux中安装数据库首选MySQL,Mysql数据库的第一个版本就是发行在Linux系统上,其他选择还可以有postgreSQL,oracle等在Linux上安装mysql数据库,我们可以去其官网上下载mysql数据库的rpm包,http://dev.mysql.com/downl…

koa2-cookie-session

node.js的path.extname方法使用   由于该方法属于path模块,使用前需要引入path模块(var path require(“path”) )   接收参数:   p path 路径 path.extname(index.html)// returns.htmlpath.extname(index.)// returns.pat…

从程序员角度看ELF

从程序员角度看ELF原文:《 ELF:From The Programmers Perspective》作者&#xff1a;Hongjiu Lu <mailto: hjlnynexst.com>NYNEX Science & Technology, Inc. 500 Westchester Avenue White Plains, NY 10604, USA 翻译&#xff1a;alert7 <mailto: alert721cn.co…

JAVA命令符找不到符号_[转]Java命令行编译文件时出现的错误,找不到符号或软件包不存在等...

标签(空格分隔)&#xff1a; Javajavascript习惯了eclipse的自动编译&#xff0c;Java命令行编译、执行文件只会最基础的部分&#xff0c;就是对单文件的编译和执行&#xff0c;并且不包含任何外部JAR包。但有时候你还非得用命令行&#xff0c;会碰到一些问题&#xff0c;博主这…

C#中POST数据和接收的几种方式

POST方式提交数据&#xff0c;一种众所周知的方式&#xff1a; html页面中使用form表单提交&#xff0c;接收方式&#xff0c;使用Request.Form[""]或Request.QueryString[""]来获取。 这里介绍另外一种POST方式和接收方式&#xff0c;就是将整个数据作为加…