Javascript 学习笔记

Javascript note

chapter one

1.1 值

js中有六种基本的值类型:number,string,boolean,object,function,undifined

1.2 number

计算机使用序列的方式存放数据到内存中,js使用固定长度为64的位序列来存储数字值,对于二进制来说,64位可以表示2^64个数字

但实际上并没有那么大,因为这个64位的位序列需要表示负数,所以有一个符号位用来表示数字的正负;另外还需要一些位来存储小数点位置的信息(具体的书中没说明,有点复杂 暂不学习)

由于计算机处理浮点数的机制,计算整数时,计算结果会十分准确,但计算小数时就会有精度损失,因此计算小数都是近似值

1.2算术

ps:无需记熟运算符的优先级,不确定时只需要大胆加braces()

1.2.2特殊数字

+/-Infinity

NaN 非数值 在Infinity-Infinity ,0/0等情况会出现

1.3字符串

在JS中 "" , ‘‘ 括起来的都是字符串

ps: 特殊情况 就是字符串里有 "" ‘‘ 这个时候就要用到 转义符 (和Java一样啦)------‘\‘  如 \n 为换行 如 "fuck ‘\n‘ " 需要写成  "fuck \"\\n\""

可以用‘+‘来连接 多个字符串

1.4 一元运算符

如 typeof   sizeof

1.5 boolean

只有两种取值 true false

特别注意 字符串的比较机制(java.lang.String是不允许使用 < , >等 operator 来比较的),在js中是按unicode值(首字母)来比较的

实质上就是按照Unicode值来比较的

http://www.imkevinyang.com/2009/02/%E5%AD%97%E7%AC%A6%E7%BC%96%E8%A7%A3%E7%A0%81%E7%9A%84%E6%95%85%E4%BA%8B%EF%BC%88ascii%EF%BC%8Cansi%EF%BC%8Cunicode%EF%BC%8Cutf-8%E5%8C%BA%E5%88%AB%EF%BC%89.html

1.5.2逻辑运算符(&&,||, !)

注意一下 运算符优先级问题,简单来说 || 优先级最低,其次是&&接着是比较运算符(<,>,==)

*三元运算符   ?  :

1.6 undefined  null

js特有的undefined(感觉是) 在js中和null差别不大

1.7自动类型转换

js会自动把运算符两端的值转换成自己期望的类型,称为 类型强制转换

1 console.log(5 +"6" );<!--56-->
2 console.log(5 -"3");<!--2-->
3 console.log(5 +‘1‘);<!--51-->
4 console.log(5 * ‘2‘);<!--10-->

但有些值js无法转换,如NaN , 字符串 ,此时就会产生NaN ,包含 NaN的运算结果仍然是NaN,

相同类型的值之间使用"=="进行比较时,运算结果很好预测(只要两端没有NaN搞事,只要两个值相同,则返回true),

1 console.log(NaN == 5);<!--false-->
2 console.log(NaN == undefined);<!--false-->
3 console.log(NaN == "");<!--false-->
4 console.log(NaN == null);<!--false-->

另外,当使用一个值和boolean 的false比较时,js的比较规则是,0,"",NaN 都等价于false,其他都等价于true

如果运算符两端存在null 或者undefined ,那只有两端都是null 或者 undefined 才为 true

顺便一提,严格比较符 ‘===‘ ,则要求完全一致才返回true

console.log(null == undefined);<!--true-->console.log(null === undefined);<!--false-->

 

由于当operator两端的值类型不同,js的转换规则比较复杂,请事先确定两端值类型一致

至于使用相等运算符会不会对后续代码造成意外影响,答案是有可能会。

#程序结构

##control flow

### if else

js 与 java有点不同语法

是if()

doWork;

else if()

doWork;

else

doWork;

#章节习题

时间: 2024-07-30 17:05:27

Javascript 学习笔记的相关文章

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

javascript学习笔记---ECMAScriptECMAScript 对象----修改对象

通过使用 ECMAScript,不仅可以创建对象,还可以修改已有对象的行为. prototype 属性不仅可以定义构造函数的属性和方法,还可以为本地对象添加属性和方法. 创建新方法 通过已有的方法创建新方法Number.prototype.toHexString = function() { return this.toString(16); }; 在此环境中,关键字 this 指向 Number 的实例,因此可完全访问 Number 的所有方法.有了这段代码,可实现下面的操作: var iNu

javascript学习笔记——如何修改&lt;a href=&quot;#&quot;&gt;url name&lt;/a&gt;

0.前言 使用了一段时间javascript,再花了点时间学习了jquery,但是总是感觉自己很"迷糊",例如<a href="#">url name</a>中,如果修改href中的"#"应如何编写代码,如果修改url name应如何编写代码.再加上javascript和jquery操作方法略有不同,所以我就更"迷糊"了. [说明] 曾经使用关键词--"innerHTML和value区别&qu

javascript学习笔记---ECMAScript语法(辅助)

1.区分大小写. test与Test变量是两个不同的变量 2.变量是弱变量. 与C,java等等语言变量不是很一样. 如下java代码 ? 1 2 3 4 int i =0; //再次赋值 i = 10;//ok i = "hello";//wrong 类型不匹配 javascript ? 1 2 3 4 var i = 9; //再次赋值 i = 10;//ok i = "hello";//ok 但是不建议这么干,如此会给开发造成干扰,不明确变量的类型.(变量命名

javascript学习笔记---ECMAScript语法(变量)

变量声明关键字var: var i = 1: var t = "asd"; var test1 = "hi", test2 = "hello"; 声明变量不一定要初始化, var i;//ok 另一方面在使用变量前若未加关键字var,则此变量为全局变量(此特性需特别记住). 变量名字: 变量名需要遵守两条简单的规则: 第一个字符必须是字母.下划线(_)或美元符号($) 余下的字符可以是下划线.美元符号或任何字母或数字字符 命名变量规则: Came

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性

JavaScript学习笔记【3】数组、函数、服务器端JavaScript概述

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 数组 函数 服务器端JavaScript概述 数组 数组是动态的:根据需要它们会增长或缩减,并且在创建数组时无须声明一个固定的大小或在数组大小变化时无须重新分配空间. 数组可能是稀疏的:索引不一定要连续的,它们之间可以有空缺. 通常,数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快很多. 数组继承自Array.prototype中的属性,它定义了一套丰富的数组操作方法. 如果省略数组直接量中的某个