ECMAScript被业界公认为是标准、通用、跨平台、中立于厂商的浏览器脚本。其他的语言可以实现ECMAScript来作为功能的基准,比如JavaScript、ActionScript。
ECMAScript基础:          注:标记为'###'的表示书中没有此内容,为本人所加;'***'表示强调。

1.变量是弱类型。
可以存放任意类型的值。如:
var test ="hi";
alert(test);//output "hi"
test=55;
alert(test);//outputs "55"

2.原始值和引用值。
变量可以存放两种类型的值,即原始值和引用值。
原始值(primitive value)是存储在栈(stack)中的简单数据段。也就是存储在变量访问的位置。
引用值(reference value)是存储在堆(heap)中的对象。放在变量(栈空间)中的值是该对象在堆中的地址。

3.原始类型。
原始类型包括Undefined,Null,Boolean,Number,String五类。
Undefined指声明了变量但未初始化的值,Null则用于尚未存在的对象。
Boolean值、数字、字符串的原始值的有趣之处在于,它们是伪对象!因此它们具有属性和方法。例如:
var sColor="blue";
alert(sColor.length);

4.原始类型转换。
(1)转换成字符串。
用toString()方法。对Boolean输出"true"或"false".对于Number类型,分为默认模式和基模式。如:
var bFound=false;
alert(bFound.tostring()); //outputs "false"

var iNum1=10.0;
alert(iNum1.tostring()); //outputs "10" //默认模式
var iNum2=10;
alert(iNum2.tostring(2)); //outputs "1010" //基模式
alert(iNum2.tostrin(8)); //outputs "12"
(2)转换成数字。
用parseInt()和parseFloat()。只有对String类型转换,对其他类型返回的都是NaN。如:
var iNum1=parseInt("123blue"); // return 123 ***
var iNum2=parseInt("0xA"); // return 10
var iNum3=parseInt("22.5"); // return 22
var iNum4=parseInt("blue"); // return NaN
(3)强制类型转换。
<1> Boolean(value):
var b1=Boolean(""); //false    
var b1=Boolean(0); //false 
var b1=Boolean(null); //false 
其他返回true
<2> Number(value):
Number("123abcd"); //NaN //对整个值,而不是部分
<3> String(value):与toString()的唯一区别就是对null和undefined强制类型转换成为"null"和"undefined",而toString()不行。

5.引用类型。
Boolean类、Number类、String类。
(1) Number类。
方法举例:
var oNumberObject=new Number(99);
alert(oNumberObject.toFix(2)); //outputs "99.00" //2代表两位小数
(2)String类。
 属性有length.
 方法有charAt(),charCodeAt(),concat(),+,indexOf(),lastIndexOf(),localeCompare(),slice(),substring(),substr(),toLowerCase(),toUpperCase()等。举例:
 
 //查找指定位置的单个字符
 var oStringObject=new String("hello world");
 alert(oStringObject.charAt(1)); //outputs "e"
 alert(oStringObject.charCodeAt(1)); //outputs "101" //Unicode编码
 
 //连接
 sResult=oStringObject.concat(",oh!"); //等同于sResult=oStringObject+",oh!"
 alert(sResult); //outputs "hello world,oh!"
 alert(oStringObject);//outputs "hello world"
 
 //指定子串在另一字符串中的位置,如果没找到返回-1
 alert(oStringObject.indexOf("o")); //outputs "4"
 alert(oStringObject.lastIndexOf("o")); //outputs "7"
 
 //indexof(,)内的第二个参数表示从第几个字符开始计数 如查找子串所有位置的例子:
 var pos=oStringObject.indexOf("o"); //###
 while(pos!=-1) //outpus "4" "7"
 {
   alert(pos);
   pos=oStringObject.indexOf("o",pos+1);
 } 
 
 //创建子串
 alert(oStringObject.substring(3)); //outputs "lo world"
 alert(oStringObject.slice(3)); //outputs "lo world"
 alert(oStringObject.substring(3,7)); //outputs "lo w" //注意7位置上的"0"不显示
 alert(oStringObject.substr(3,2)); //outputs "lo" //表示从第三个字符开始的2个字符 //###
 
 //slice()与substring的区别在于,处理负参数时,substring将其做0对待,如:
 alert(oStringObject.substring(-3)); //outputs "hello world"
 alert(oStringObject.substring(3,-4)); //outputs "hel"
 alert(oStringObject.slice(3,-4)); //outputs "lo w"

6.typeof和instanceof
var sTemp= "test string";
alert(typeof sTemp); //outputs "string"

var oStringObject=new String("hello world");
alert(oStringObject instanceof String); //outputs "true" //问的是"变量oStringObject是String类的实例吗?"

7.运算符
void返回undefined,通常用于避免不应输出的值。
<a href="javascript:window.open('about:blank')">Click Me</a><!--  此处window.open()返回的是新打开的窗口,该对象被转换成要显示的字符串,所以出错,应为: -->
<a href="javascript:void(window.open('about:blank'))">Click Me</a>

(1) 位运算符
NOT ~,AND &,OR |,XOR ^
其中NOT分三步处理:转换成32数字,把二进制数取反,把改反码转换成浮点数。如:
var iNum1=25;
var iNum2=~iNum1;
alert(iNum2); //outputs "-26"
(2) Boolean运算符
逻辑NOT !,逻辑AND &&,逻辑OR ||
(3) 关系运算符
var bResult="Brick"<"alphabet";
alert(bResult); //outputs "true" //B和a的字符代码分别为66和97

var bResult="23"<"3";
alert(bResult); //outputs "true" 
var bResult="23"<3;
alert(bResult); //outputs "false"  //这是因为字符串"23"和数字比较时,字符串被转换成了数字23。***

var bResult="a">3;
alert(bResult); //outputs "false"  //这是因为字符串"a"不能转换为数字,而调用parseInt()返回NaN. ***

8.无重载
但可以通过arguments对象达到同样效果,如:
function doAdd()
{
if(arguments.length==1)
{
alert(arguments[0]);
}
else if(arguments.length==2)
{
alert(arguments[0]+arguments[1]);
}
}
doAdd(10); //outputs "10" //我们可以看到,自定义的函数可以接受任意多个参数,ECMAScript不会验证传递的参数个数是否与定义的参数个数相等。
doAdd(10,50); //outputs "60"

9.Function类
最令人感兴趣的莫过于,函数实际上是个对象! 
(1)function sayHi(sName)
{
  alert(sName);
}
//所以可如此定义:
var sayHi =new Function("sName","alert(\"Hello\"+sName);");
(2)因为函数是个对象,所以也有属性和方法。
<1> length属性,返回参数个数,如:
alert(sayHi.length); //outputs "1"
<2> valueOf()和toString()方法,返回函数的代码,如:
alert(sayHi.toString());

转载于:https://www.cnblogs.com/vasty/archive/2008/09/15/1291202.html

《JavaScript高级程序设计》笔记之'ECMAScript基础'相关推荐

  1. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

  2. JavaScript高级程序设计笔记01 | 第一章到第四章 | 关键字与保留字 | 数据类型 | 操作符 | 作用域

    观前提示:大部分都是书上的内容,个人理解的部分的较少,看我的笔记还不如去看书 第二章 async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或 等待加载其他脚本.只对外部 ...

  3. javascript高级程序设计笔记

    1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message="hello world!"; var messageAsBoole ...

  4. JavaScript高级程序设计笔记 - 第四章 变量 作用域 内存问题

    4.1 基本类型和引用类型的值 基本类型: 简单的数据段 引用类型: 指那些可能有多个值构成的对象, 指保存在内存中的对象 4.1.2 复制变量值 除了保存的方式不同之外,在从一个变量向另一个变量复制 ...

  5. JavaScript高级程序设计笔记 事件冒泡和事件捕获

    1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body><div> click me!</div> < ...

  6. 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...

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

    本笔记汇总了作者认为"JavaScript高级程序设计"这本书的前七章知识重点,仅供参考. 第六章 面向对象的程序设计 面向对象(Object-Oriented, OO)的语言有一 ...

  8. JavaScript高级程序设计学习笔记(三)

    分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...

  9. 《JavaScript高级程序设计》学习笔记(一)

    文章目录 一.什么是JavaScript JavaScript的组成 二.HTML中的JavaScript 2.1 <script>元素 2.1.1 标签位置 2.1.2推迟执行脚本 2. ...

  10. JavaScript高级程序设计(读书笔记)(一)

    本笔记汇总了作者认为"JavaScript高级程序设计"这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaS ...

最新文章

  1. ToolBarTray与ToolBarPanel的区别
  2. .NET生态现状:超一半 .NET开发者使用C# 8、.NET Framework使用量减少
  3. pythonfor循环列表排序_Python Day4950(for循环语句整理)
  4. 2021计算机基础知识题库,2021~2021计算机基础知识练习题
  5. 远程推送,集成极光的SDK,证书制造
  6. redis cluster以及master-slave在windows下环境搭建
  7. 联想内部工程师 Vista自学手册
  8. Mesos超配:让集群利用率可以达到100%
  9. 大师林语堂的英文学习要诀
  10. adc分辨率和精度的区别_STM32学习笔记—ADC采集数据常见问题
  11. 五、鼎捷T100总账管理之总账报表及查询
  12. Lua中的os.time和os.date以及时区计算
  13. UItraEdit激活码
  14. 【渝粤教育】国家开放大学2018年秋季 7179-22T文献检索 参考试题
  15. Python解决图文验证码登录识别(1)
  16. CSS3 animation-fill-mode详解
  17. Logstash过滤详解(一知半解)
  18. python获取文件夹名称、文件名、去除后缀的文件名、文件改名等
  19. 新手小白如何短时间内熟练运营微信公众号
  20. web2.0中流行的设计元素:颜色

热门文章

  1. Silverlight 2.0的了解
  2. PHP设计模式——状态模式
  3. sourceinsight4.0安装破解( 内含sublime text配色方案)
  4. CentOS_5.5_安装GCC编译LiME
  5. 又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!...
  6. Android中将EditText里面的内容设置成任意想要的状
  7. ARPG游戏打击感相关的技术简单总结
  8. 优化网站设计(九):减少DNS查找的次数
  9. PHP中header和session_start前不能有输出的原因
  10. SQL不同服务器数据库之间的数据操作整理(完整版)