第2章:在html中使用javascript

①script标签的defer属性

<script type="text/javascript" defer="defer" src="dmeo.js"></script>

这个属性的用途是表明脚本在执行时不会印影响页面的构造(立即下载,延迟执行),整个页面都解析完毕后再按顺序运行。(放在dom前面依旧会阻塞页面加载)

②script标签的async属性

<script type="text/javascript" async src="dmeo.js"></script>

立即下载,但是执行顺序并不保证按照指定他们的相互顺序执行。(放在dom前面不会阻塞页面加载)

③嵌入代码和外部文件

<script>
具体代码...
</script>

上述具体代码,在HTML和XHTML中会存在一定程度的语法解析差异(不兼容)所以要通过hack来解决(虽然现在都是HTML5了,但这个知识点可以了解一下)

而通过外部文件引入js代码,就不会出现上述问题,所以我们通常建议通过外部文件来引入代码块。

并且通过外部文件引入,会有如下优点:可维护性、可缓存。

第3章:基本概念

①严格模式

ECMAscript 5中引入了严格模式的概念;

严格模式是为JavaScript定义了一种不同的解析与执行模型,告诉JavaScript引擎切换到严格模式,这是为了不破坏ECMAScript3语法而特意选定的语法;

function demo(){
"use strict";
//函数体
}

②语句格式

语句结尾加分号(虽然不是必须的,但在某些情况下可以增进代码的性能以及避免错误):

var sum = a + b ;       //有效的语句,推荐
var sum = a + b //有效的语句,不推荐

if语句中始终用代码块带包含语句(虽然只有一条语句时可以不使用{},但最佳实践是始终使用代码块):

if (test)
alert(test); //有效但易出错,不要使用 if (test) {
alert(test); //推荐使用
}

③变量

在ES6之前,定义变量要通过var关键字;

var message;                        //此时message变量因为没有被初始化,所以值为undefined

message = 'hello world';            //此时,message值为‘hello world’,并不代表他是字符串类型

message = ;                     //有效,但不推荐

注意:用var操作符定义的变量将成为定义该变量的作用域中的局部变量,函数作用域中定义的变量在函数退出后就会被销毁(闭包另行讨论)

没有用var 定义的变量,该变量就成了全局变量(window作用域下)

    var a= ;
function test(){
str = 'hello world';
}
test();
console.log(window.str,window.a);

④数据类型(typeof操作符)

“undefined”--------------------值未定义或定义了却没有初始化;

“boolean”----------------------布尔值;

“string”-------------------------字符串;

“number”-----------------------数值;

“object”-------------------------对象或者null;

“function”-----------------------函数。

下列几种值进行布尔判断的时候是false:false、“”(空字符串)、0、NAN、null、undefined

⑤浮点数值计算问题

console.log(0.1 + 0.2 == 0.3);
console.log(0.15 + 0.15 == 0.3);

关于浮点数值计算会产生舍入误差的问题,这是使用基于IEEE754数值的浮点计算的通病,ECMAScript并非独此一家,其他使用相同数值格式的语言也存在这个问题。

⑥NaN

not a number !

    console.log(NaN == NaN);        //false
console.log(isNaN(NaN)); //true
console.log(isNaN()); //false
console.log(isNaN('')); //false
console.log(isNaN('blue')); //true
console.log(isNaN(true)); //false

⑦parseXXX与按位非

在ES5之后,parseInt()已经不具备自动解析八进制值的能力,但是你可以传递第二个参数来指定进行多少进制转换

parseInt('AF',)                    //
parseInt('AF') //默认10进制,但是第一个不是数值,返回NaN

parseFloat()只解析十进制,没有可用的第二个参数来指定进制转换

var num1 = parseFloat("1234blue");         //1234 (整数)
var num2 = parseFloat("0xA"); //
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //

⑧toString()方法和String()

数值、布尔、对象和字符串都有toString()方法,null和undefined没有toString()方法;

并且,对于数值型数据,toString()方法可以传递一个参数(进制数)从而返回对应进制的数值;

String()方法用于强制类型转换(转String),而且当该数据存在toString()方法时,默认调用该方法,否则,null返回‘null’,undefined返回‘undefined’

第5章:引用类型

1⃣️检测数组

value instanceof Array;

对于一个网页或者一个全局作用域而言,上述操作可以检测是不是数组;但是如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数;

为了解决这个问题,ES5新增了Array.isArray()方法,这个方法的目的是最终确定某个值到底是不是数组,无论他是在哪个全局作用域中创建的:

Array.isArray(value);

2⃣️数组的迭代方法

filter(fn()):返回fn函数会返回true的项组成的数组;

map(fn()):返回每次函数调用的结果组成的数组;

3⃣️Math对象

数组求最大值:

var values = [,,,,,,];
var max = Math.max.apply(Math, values);

JavaScript高程第三版笔记(1-5章)的更多相关文章

  1. JavaScript高程第三版笔记-面向对象编程

    之前有篇博客曾提到过一点js的面向对象编程:js面向对象编程. 这里就结合js高程详细剖析一下javascript的面向对象编程. 前序: 1⃣️Object.defineProperty() var ...

  2. JavaScript高程第三版笔记-DOM扩展

    在那个刀耕火种的年代,用过jQuery的都体会到了jQuery带来的便捷,尤其是元素选择器. jQuery(www.jquery.com)的核心就是通过 CSS 选择符查询 DOM 文档取得元素的引用 ...

  3. JavaScript高程第三版笔记-函数表达式

    1⃣️递归 阶乘函数: function factorial(num){ ){ ; } ); } } 改装一:(arguments.callee指向正在执行的函数的指针,实现解耦) function ...

  4. javaScript高程第三版读书笔记

    看完<dom编程艺术>现在准备读进阶版的js高程了,由于篇幅较长,所以利用刚看完<dom编程艺术>学到的知识写了段JavaScript代码,来折叠各章的内容.并且应用到了< ...

  5. 重读《学习JavaScript数据结构与算法-第三版》- 第5章 队列

    定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读<学习JavaScript数据结构与算法-第三版>的系列文章,主要讲述队列数据 ...

  6. 《Effective C++》第三版笔记

    阅读此笔记前,请先阅读 <Effective C++>第二版笔记  和  <More Effective C++>笔记 这里只记录与上面笔记不同的条款,主要是 "面对 ...

  7. 重读《学习JavaScript数据结构与算法-第三版》-第2章 ECMAScript与TypeScript概述

    定场诗 八月中秋白露,路上行人凄凉: 小桥流水桂花香,日夜千思万想. 心中不得宁静,清早览罢文章, 十年寒苦在书房,方显才高志广. 前言 洛伊安妮·格罗纳女士所著的<学习JavaScript数据 ...

  8. 重读《学习JavaScript数据结构与算法-第三版》- 第4章 栈

    定场诗 金山竹影几千秋,云索高飞水自流: 万里长江飘玉带,一轮银月滚金球. 远自湖北三千里,近到江南十六州: 美景一时观不透,天缘有分画中游. 前言 本章是重读<学习JavaScript数据结构 ...

  9. Effective Java 第三版笔记(目录)

    <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时 ...

随机推荐

  1. Poi导出Excle

    场景 准备金系统需要从数据库读取大量数据存放到List集合中(可能还会做逻辑上的处理),并生成一个Excle文件,下载到客户本地. 问题一:客户体验 如果导出的文件比较大,比如几十万条数据,同步导出页 ...

  2. SSM项目无法解析JSP页面

    JSP页面显示标头<%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  3. hive日期函数-广发实战(三)

    近一月客户新增常规里程数与额度比即上个月 第一天(包含)到上个月最后一天(包含) 字段是batch_date==>格式是 yyyymmdd ),'MM'),'-',''); +--------- ...

  4. 题解 【SDOI2009】HH的项链

    题面 解析 这题本来莫队可以过的. 然而,对于某些加强的数据,莫队就得吸氧了.. 所以,本题解还将介绍另一种算法——树状数组. 首先,莫队就不用讲了吧(毕竟只是板子). 那么,开始进入正题(似乎有点啰 ...

  5. SparkSQL之UDAF使用

    1.创建一个类继承UserDefinedAggregateFunction类. ------------------------------------------------------------ ...

  6. Python之subprocess模块的使用

    1.subprocess调用系统的命令 #!/usr/bin/env python # -*- coding: utf-8 -*- import subprocess import sys compl ...

  7. JavaScript赋值运算符

    赋值运算符 ⑴     "="  赋值符号 可以将符号右侧的值赋值给符号左侧的变量 ⑵   "+="  加等于,是一个运算符 不要分开写 a += 5   等价 ...

  8. 数据类型之字符串类型与Number类型

    ㈠字符串类型 ⑴在JS中字符串需要使用引号引起来 ⑵使用双引号或单引号都可以,但是不要混着用 ⑶引号不能嵌套,双引号不能放双引号,单引号不能放单引号 ⑷在字符串中,可以使用“\”作为转义字符,当表示一 ...

  9. 深度学习笔记(十一)网络 Inception, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv

    1. Abstract 本文旨在简单介绍下各种轻量级网络,纳尼?!好吧,不限于轻量级 2. Introduction 2.1 Inception 在最初的版本 Inception/GoogleNet, ...

  10. 「BZOJ4242」水壶

    题目链接 戳我 \(Solution\) 我们看到这题之后发现这题不是\(n^2\)把边弄出来后就跟货车运输差不多了,但是看了数据后发现\(n^2\)条边建不出来啊,这里就不详细的讲\(kruskal ...