《JavaScript高级程序设计》读书笔记--(2)基本概念
变量
Javascript 是区分大小写的, 也就是说 var nun 与 var Num 是不同的变量.
ECMAScript的变量是松散类型的,所谓松散类型就是可以保存任何类型的数据。ECMAScript中变量共有6种类型:5种基本类型和1种引用类型。
基本类型如下所示:
- Undefined;
- Null;
- Boolean;
- Number;
- String;
引用类型只有一种,那就是Object。示例代码如下所示:
var message; console.log(message);//声明但没被初始化的标量为Undefined var str='I have a dream!'; str=10;//Javascript中变量是弱类型,变量可存储任意类型数据 console.log(str);
输出结果如下所示:

传递参数
Javascript中函数传递参数若为基本类型,函数内会拷贝这一个基本类型参数(相当于一个副本);若传递参数若为引用类型(也就是对象),函数内部会引用该对象(传递实质上是对象的地址)。示例代码如下所示:
var x=10,y={Name:'binghuojxj'};
function Test(x,y){
x+=1;
console.log('函数内部x='+x);
y.Address='济南历下区';
console.log('函数内部y.Address='+y.Address);
}
Test(x,y);
console.log('函数外部x='+x);
console.log('函数外部y.Address='+y.Address);
输出结果如下:

函数参数
由于不存在函数签名的特性,所以ECMAScript函数不能重载;
可以向ECMAScript函数传递任意数量的参数(这跟函数定义时参数的个数无关),可以通过arguments对象来访问这些参数;示例代码如下所示:
function Add(){var sum=0;for(var i=0;i<arguments.length;i++){sum+=arguments[i];}return sum;}console.log(Add(10,20));console.log(Add(10,20,30));console.log(Add(10,20,30,40));
输出结果如下:

无须指定函数的返回值,因为任何ECMAScript函数可以在任何时候返回任何值。
Javascript没有块级作用域
什么也不说,直接上代码:
if(1==true){var color='blue';}console.log('if语句外部color='+color);for(var x=0;x<10;x++){console.log(' '+x);}console.log('for循环外部x='+x);
输出结过如下所示:

0.1+0.2不等于0.3
运行下面的代码:
alert(0.1+0.2);
输出结果如下:

原因如下所示:
Javascript中的数字都是用浮点数表示的,并规定使用IEEE 754 标准的双精度浮点数表示。
IEEE 754 规定了两种基本浮点格式:单精度和双精度。
- IEEE单精度格式具有24 位有效数字精度(包含符号号),并总共占用32 位。
- IEEE双精度格式具有53 位有效数字精度(包含符号号),并总共占用64 位。
推到过程如下啊所示:
十进制0.1=> 二进制0.00011001100110011…(循环0011)=>尾数为1.1001100110011001100…1100(共52位,除了小数点左边的1),指数为-4(二进制移码为00000000010),符号位为0=> 计算机存储为:0 00000000100 10011001100110011…11001=> 因为尾数最多52位,所以实际存储的值为0.00011001100110011001100110011001100110011001100110011001而十进制0.2=> 二进制0.0011001100110011…(循环0011)=>尾数为1.1001100110011001100…1100(共52位,除了小数点左边的1),指数为-3(二进制移码为00000000011),符号位为0=> 存储为:0 00000000011 10011001100110011…11001因为尾数最多52位,所以实际存储的值为0.00110011001100110011001100110011001100110011001100110011那么两者相加得:0.00011001100110011001100110011001100110011001100110011001+ 0.00110011001100110011001100110011001100110011001100110011= 0.01001100110011001100110011001100110011001100110011001100转换成10进制之后得到:0.30000000000000004
《JavaScript高级程序设计》读书笔记--(2)基本概念的更多相关文章
- javascript高级程序设计读书笔记-事件(一)
读书笔记,写的很乱 事件处理程序 事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别 没有DOM1 同样的事件 DOM0会顶掉html事件 因为他们都是属性 而 ...
- javascript高级程序设计读书笔记
第2章 在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...
- JavaScript高级程序设计 读书笔记
第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...
- Javascript高级程序设计读书笔记(第六章)
第6章 面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...
- JavaScript高级程序设计-读书笔记(7)
第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...
- JavaScript高级程序设计-读书笔记(6)
第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l 简单值:使用与JavaScript相同的语法,可以在JS ...
- JavaScript高级程序设计-读书笔记(4)
第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Do ...
- JavaScript高级程序设计-读书笔记(1)
第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l ECMAScript:提供核心语言功能: l 文 ...
- JavaScript高级程序设计读书笔记之JSON
JSON(JavaScript Object Notation)JavaScript对象表示法.JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据. ...
- javascript高级程序设计 读书笔记1
第二章 在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS 最好使用外部链接<script src="example.js" ></sc ...
随机推荐
- Dom中的继承关系
首先声明,一些内容基于个人猜测,如果哪里有错误,请立即联系在下! 我们用js操作Dom时,会经常用到一些个方法比如基于获取到的元素选择其子元素: <!DOCTYPE html> <h ...
- 22.mongodb副本集集群
软件版本64位: $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz mongo ...
- 人工神经网络ANNs
参考: 1. Stanford前向传播神经网络Wiki 2. Stanford后向传播Wiki 3. 神经网络CSDN blog 4. 感知器 5. 线性规划 6. Logistic回归模型 内容: ...
- spark的standlone模式安装和application 提交
spark的standlone模式安装 安装一个standlone模式的spark集群,这里是最基本的安装,并测试一下如何进行任务提交. require:提前安装好jdk 1.7.0_80 :scal ...
- LINQ之路 9:LINQ to SQL 和 Entity Framework(上)
在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的 ...
- 使用扫描二维码打开app
应该不少人遇到过这种需求,扫描二维码打开app如果用户没有这个app则提示它跳转. 用网页直接来调用app是不打可能的,必须原生那边先做一些配置. 首先,安卓和苹果的调用方法是不同的. 所以我们需要先 ...
- js多个输入框运算计算结果输出到另一个输入框
<div id="ckjrzy_4_14_15"> <div id="ckjrzy_4_14_17">收益计算器 </div& ...
- yii2 renderPartial
在 views/news/_copyright.php 中插入以下代码: <div> This is text about copyright data for news items &l ...
- iis设置asp站点
在 IIS 6.0 中,默认设置是特别严格和安全的,这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击.譬如说默认配置数据库属性实施的最大 ASP 张贴大小为 204,800 个字节,并将各个 ...
- Bootstrap之Carousel不能自动播放的解决办法(转)
Bootstrap是一个非常好的css/javaScript框架,尤其对于移动端的自适应和适配能力都比较强. 用Bootstrap自带的Carousel写了一个图片轮播的广告部分,用js调用后却出现了 ...