变量

Javascript 是区分大小写的, 也就是说 var nun 与 var Num 是不同的变量.

ECMAScript的变量是松散类型的,所谓松散类型就是可以保存任何类型的数据。ECMAScript中变量共有6种类型:5种基本类型和1种引用类型。

基本类型如下所示:

  1. Undefined;
  2. Null;
  3. Boolean;
  4. Number;
  5. 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 规定了两种基本浮点格式:单精度和双精度。

  1. IEEE单精度格式具有24 位有效数字精度(包含符号号),并总共占用32 位。
  2. 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)基本概念的更多相关文章

  1. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  2. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  3. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  4. Javascript高级程序设计读书笔记(第六章)

    第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...

  5. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  6. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  7. JavaScript高级程序设计-读书笔记(4)

    第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Do ...

  8. JavaScript高级程序设计-读书笔记(1)

    第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l        ECMAScript:提供核心语言功能: l        文 ...

  9. JavaScript高级程序设计读书笔记之JSON

    JSON(JavaScript Object Notation)JavaScript对象表示法.JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据. ...

  10. javascript高级程序设计 读书笔记1

    第二章  在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS   最好使用外部链接<script src="example.js" ></sc ...

随机推荐

  1. ASP.NET MVC: Razor中的@:和语法

    本文将讨论新版Razor里视图引擎中支持的两个有用的语法功能:@:和<text>语法. 用Razor实现流畅编程 ASP.NET MVC 3配有一个新的名为“Razor”的视图引擎选项(除 ...

  2. 浅谈一下关于iscroll的使用心得

    因为最近的项目所有页面老板想做成苹果原生那种上下拉动有回弹效果的体验,浏览器自带是没有这种功能的,自己写的话兼容性可能会出大问题,要适配安卓的各种机型实在是难,所以我还是选择去使用移动端相对比较稳定的 ...

  3. 可拖拽和带预览图的jQuery文件上传插件ssi-uploader

    插件描述:ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件.该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非 ...

  4. 猎奇过后,VR还有什么能让用户买单?

    VR乍到之时,声如迅雷,来势汹汹却转瞬而逝. 能够在市场激起千层浪,大抵是因其强势地撩起了不少好奇心者,而随着这个热闹周围聚拢层层的围观者,自然吸引了更多人驻足. 但围观之下,好奇心不会转化为购买率. ...

  5. python画图

    正弦图像: #coding:utf-8import numpy as npimport matplotlib.pyplot as pltx=np.linspace(0,10,1000)y=np.sin ...

  6. Virtualbox安装USB2.0/3.0

    系统:Ubuntu16.04 软件:Virtualbox5.1 1.打开Virtualbox,不启动虚拟系统. 2.点击设置->USB->启动usb2.0. 3.若发现不能启用,则到官网下 ...

  7. WPF进度条系列②旋转小圆圈

     写在之前: 关于WPF的样式,我也是学习了很多朋友的文章才有了下面的东西,因为时间有些久远 & 备份的链接也都不在了. 所以,究竟是看过哪些文章,也是记不清楚了…… 请见谅. ------- ...

  8. Powerdesigner SqlServer转Oracle(转)

    参考文章,原文地址:http://blog.csdn.net/cicada688/article/details/7802881 问题1:sqlserver数据库直接转oracle.字段类型由sql ...

  9. 20169212《Linux内核原理及分析》第十二周作业

    格式化字符串漏洞实验 格式化字符串漏洞是由像 printf(user_input) 这样的代码引起的,其中 user_input 是用户输入的数据,具有 Set-UID root 权限的这类程序在运行 ...

  10. TypeError: window.open is not a function

    想必大家现在都已经到家了,而苦逼的我还要坐在办公室混拿微薄的工资,技不如人,平常不努力给自己充电,年终一毛钱都没多给.不说这扫兴的话题了,在这给同样在苦逼坚守岗位的同志们节日的问候,新的一年,好运连连 ...