首页 > 代码库 > 《JavaScript高级程序设计》读书笔记--(2)基本概念
《JavaScript高级程序设计》读书笔记--(2)基本概念
变量
Javascript 是区分大小写的, 也就是说 var nun 与 var Num 是不同的变量.
ECMAScript的变量是松散类型的,所谓松散类型就是可以保存任何类型的数据。ECMAScript中变量共有6种类型:5种基本类型和1种引用类型。
基本类型如下所示:
- Undefined;
- Null;
- Boolean;
- Number;
- String;
引用类型只有一种,那就是Object。示例代码如下所示:
var message;console.log(message);//声明但没被初始化的标量为Undefinedvar 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)基本概念
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。