2018-03-06 JavaScript红宝书学习笔记

第一章

defer属性的作用
<script type="text/javascript" defer="defer" src="xxx.js"><script>

相当于告诉浏览器立即下载,但延迟执行

async属性的作用

与defer类似,只是标记为async的脚本不保证按照指定它们的先后顺序执行

</script>字符串问题

在使用<script>嵌入JavaScript代码时,记住不要在代码中的任何地方出现"</script>"字符串。例如下面一个错误:

<script type="text/javascript">
  function sayScript() {
    alert("</script>");
  }
src属性

需要注意的是,带有src属性的<script>元素如果包含了嵌入的代码,则只会下载并执行脚本文件,潜入的代码会被忽略,比如:

<script src="xxx.js" type="text/javascript">
  alert("hello") // 这句不会被执行
</script>

数据类型

ECMAScript中规定了五种简单数据类型(基本数据类型)和一种复杂数据类型:

  • 简单数据类型
    • Undefined
    • Null
    • Boolean
    • Number
    • String
  • 复杂数据类型
    • Object
typeof操作

typeof是一个操作符而不是函数,但也可以加圆括号使用

var message = "something"
alert(typeof message); // "string"
alert(typeof(message)); // "string"
alert(typeof 95); // "number

typeof返回的可能值有:

  • "number"
  • "string"
  • "boolean"
  • "undefined"
  • "object" (null也返回"object")
  • "function" (从技术角度讲,函数在ECMAScript中是对象,然而由于特殊性,因此通过typeof来区分函数和其他对象是有必要的)

对尚未初始化的变量和未声明的变量执行typeof操作都会返回undefined:

var message;
// 下面这个变量并未声明
// var age

alert(typeof message); // "undefined"
alert(typeof age); // "undefined"

对尚未声明的变量,只能执行一项操作,即typeof,其他操作将导致报错。
undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true(两个等号):

alert(null == undefined); // true

如果用三个等号则返回false:

alert(null === undefined); // false
数据的Boolean值
数据类型 true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined undefined

ECMAScript中所有类型的值都有与Boolean值等价的值

Number

八进制用前置0代表,十六进制用前置0x代表,如果前置了0,但是数值超过八进制,则前置0被忽略,最终按十进制表示。

var n1 = 070; // 八进制的56
var n2 = 079; // 无效的八进制数值--解析为79

var n3 = 0x1f; // 十六进制的31,可大写,也可小写

由于浮点数值需要的内存空间是整数的两倍,因此ECMAScript会不失时机地将浮点数值转化为整数值。

var floatNum1 = 1.; // 小数点后面没有数字,解析为1
var floatNum2 = 10.0; // 整数,解析为10

永远不要测试某个特定的浮点数值。

if (a + b == 0.3) { // 不要做这样的测试!
  alert("you got 0.3");
}

任何数除以0将得到NaN,任何涉及NaN地操作都会返回NaN,NaN与任何值都不想等,包括NaN本身。
isNaN()方法可以用来检测是否是NaN,isNaN()在接收到一个值之后,会尝试将这个值转换为数值,某些不是数值的值会直接转换为数值,例如字符串“10”或Boolean值:

alert(isNaN(NaN)); // true
alert(isNaN(10)); // false
alert(isNaN("10")); // false (可以被转换为数值10)
alert(isNaN("blue")); // true
alert(isNaN(true)); // false(可以被转换为数值1)

尽管有点不可思议,但isNaN确实也适用于对象。在基于对象调用isNaN()时,会首先调用对象的valueOf()方法,然后确定该方法返回的值是否可以转换为数值,如果不能,则基于这个返回值再调用toString()方法,再测试返回值。

Object

Object的每个实例都具有下列属性和方法

  • Constructor 构造函数
  • hasOwnProperty(propertyName): 用于检查给定的属性在当前实例中(而不是在实例原型中)是否存在。其中,作为参数的属性名必须以字符串形式指定。
  • isPrototypeOf(object)
  • propertyIsEnumerable
  • toLocalString()
  • toString()
  • valueOf()
一元操作符
var s1 = "2"; 
var s2 = "z"; 
var b = false; 
var f = 1. 1; 
var o = { 
    valueOf: function() { return -1; } 
}; 
s1++; // 值 变成 数值 3 
s2++; // 值 变成 NaN 
b++; // 值 变成 数值 1 
f--; // 值 变成 0. 10000000000000009( 由于 浮点 舍入 错误 所致) 
o--; // 值 变成 数值- 2

一元+操作符加在变量前面,等同于Number()操作。

var s1 = "2"; 
var s2 = "z"; 
var b = false; 
var f = 1. 1; 
var o = { 
    valueOf: function() { return -1; } 
}; 

s1++; // 值 变成 数值 3 
s2++; // 值 变成 NaN 
b++; // 值 变成 数值 1 
f--; // 值 变成 0. 10000000000000009( 由于 浮点 舍入 错误 所致) 
o--; // 值 变成 数值- 2
o = +o; // 值变成-1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容