JavaScript--我发现!原来你是这样的JS(1)
一、前言:
- 前段时间看红宝书(JavaScript高级程序设计),但没有计划的去看,也没有做详细的笔记,读了之后有点空虚,感觉不对劲啊,学的东西很难记住,印象不深啊,有种挫败感。
- 作前端的js都学不好怎么做前端。后端都学js了,你说死不死。
- 因此吾阅之,再阅之,并决心记之以博客,以增强印象,作得读书笔记,以便日后翻看及供大家参阅与讨论。
温馨提示:本系列笔记言辞会有主观色彩,知识重点记录。
二、JavaScript历史
起源:话说在上世纪末1995年,Netscape公司推出Navigator浏览器。人家公司有追求,不单单能实现静态HTML,人家还想要有动态效果,还想着能去处理表单的验证,不要老是等到后台那边才知道表单输入合不合法,特别在那个年代,一次一等就上分钟,现在我们等上个十秒都想关掉它是不是,嘴边还吐槽着什么破网站。
动手:有目标就去做,Netscape公司大牛多,Brendan Eich 用10天(网上说10天)就把JavaScript搞了出来,刚出来时叫LiveScript,为了蹭蹭当红明星Java热度,就改成JavaScript了,所以事实上他们两没啥关系。
竞争:看到Netscape公司有了js,微软感觉不行啊,我的IE要被干掉啊,同时也感到js的前途无量,于是弄了个名为JScript的JavaScript的实现。
标准: Netscape和微软竞争出现的js导致版本的不一致,随着业界的担心,JavaScript的标准化被提上议事日程。ECMA组织就去干这事,最后在弄出97年了ECMAScript作为标准。这里ECMAscript和JavaScript可以看做表达同一个东西
三、ECMAScript
ECMAScript(以下简称ES)由ECMA-262制定,ES的主要是语言的语法基础,是一种标准的存在。如果硬要区分ES和JS,ES是语言基础标准,而JS就是在这标准的基础上所实现的语言。
关于ES版本:ES从1997年制定好到现在已经经历很多版本,前面的版本都是一些小的修改。重要版本:
- ES3,第三个版本,是对标准的第一次真正意义上修改
- 2009年的ES5是当前各大流行浏览器所支持的
- 2015年出版的ES6也流行起来。
- 2015年后的每年也出版本,但浏览器还没能够支持。
四、JavaScript实现
javascript由三部分组成:
1.ECMAScript :核心部分,是js的语法基础,后面会继续写其语法。
2.DOM(文本对象模型) :用于操作HTML文档的应用编程接口。关于DOM:
- DOM的出现使得动态HTML(DHTML)得以实现,可以不用重新加载页面而改变网页的外观和内容。
- DOM带来的问题:主要是兼容性方面,Netscape和微软各抒己见,使得浏览器不兼容的局面产生。未解决此问题W3C着手规划DOM
- DOM级别:DOM1,DOM2,DOM3 ,这里的级别相当于DOM的版本一样,代表着DOM在不断的完善,现在最新是DOM3
3.BOM(浏览器模型) :使用BOM可以控制浏览器显示的页面以外的部分
五、JavaScript使用:
(1)标签属性:在网页中使用js关键的是使用<script>标签,其有6个属性:
- async:可选,表示立即下载脚本,但不妨碍页面中的其他操作。也就是异步脚本,只适用于外部脚本文件。
- defer:可选,表示脚本可以延迟到文档完全被解析和显示后在执行。也就是延迟脚本,只适合与外部脚本文件。
- src:可选,表示包含要执行代码的外部文件。
- type:默认text/Javascript。默认执行js,可以不用指定。
- charset:可选,表示通过src属性指定代码的字符集,大多数浏览器会忽略它的值,很少人使用。
- language:已废弃
常用就前4个
(2)使用:使用 <script > :有两种操作:
1. 直接在标签内写入代码,即在html中内嵌代码,这种方式不推荐。如:
<script>
function helloWorld(){
alert("hello world!");
}
helloWorld();
</script>
2. 另一种通过src属性引入外部的文件。
<script src="js/hello.js"></script>
尽可能使用外部引用js文件,优点:
可维护性:内嵌代码在html中,维护困难且可读性差,在js单独的文件中维护将轻松的多。
可缓存:浏览器可以根据具体的设置缓存链接的所用外部js文件
适应未来:通过外部文件来包含js无须对XHML的特别处理和注释hack。HTML和XHTML的包含文件的语法相同。
特别注意:
<script>在使用了src属性后,不要在内嵌代码,此时的内嵌的代码不会被执行。只会执行src对应文件的代码。
(3)位置:关于<script> 在HTML文档中的位置:
在HTML4中规定<script> 标签可以放在 <head>和<body> 标签内。
由于浏览器解析HTML文档是由上到下,且在遇到<script> 标签后会先解析和执行js代码,并中断HTML的加载,所以放在<head> 标签中是会使得HTML文档可视内容中断加载。
画重点:所以<script> 标签的位置首考虑放在<body> 标签底部。例如:
<html>
<head>
<title>hello js</title>
</head>
<body>
<p>hello js!</p>
<!-- js文件放在body底部 -->
<script src="example.js"></script>
</body>
</html>
六、JavaScript的平稳退化方案
什么是平稳退化:就是有些浏览器不支持js,当然现在几乎没有浏览器这么菜啦,还有就是js功能被禁用。这时就需要没有js的情况下你的网页怎么友好一点交互,不会搞得太难看,太尴尬。
使用<noscript> 标签,应用场景:
- 浏览器不支持JavaScript
- 浏览器支持脚本,但脚本被禁止了
例子:当浏览器不支持js或禁用js时就会显示出noscript标签中的内容,若浏览器能执行js则noscript就被隐藏。
<html>
<head>
<script src="example.js"></script>
</head>
<body>
<noscript>
<p>本页面需要浏览器支持JavaScript</p>
</noscript>
</body>
</html>
七、后记
这是看红宝书的第一篇笔记,涵盖了一二章的内容,都是知识点。本系列博客将会继续更新,一同和大家分享分享。如果觉得写得好就给个赞吧。谢谢大家。
分享一句话:时间不会停下来等你,我们现在过的每一天,都是余生中最年轻的一天。
本文出自博客园:http://www.cnblogs.com/Ry-yuan/
作者:Ry(渊源远愿)
欢迎访问我的个人首页:我的首页
欢迎访问我的github:https://github.com/Ry-yuan/demoFiles
欢迎转载,转载请标明出处,保留该字段。
JavaScript--我发现!原来你是这样的JS(1)的更多相关文章
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
- 彻底搞清楚javascript中的require、import和export(js模块加载规范的前世今生)
为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也 ...
- javascript功能插件大集合 前端常用插件 js常用插件
转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具.•npm – npm 是 javascript 的包管 ...
- Javascript模块化编程(三):require.js的用法
Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...
- JavaScript学习笔记 - 进阶篇(1)- JS基础语法
前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...
- (转)Javascript模块化编程(三):Require.js的用法
转自 ruanyifeng 系列目录: Javascript模块化编程(一):模块的写法 Javascript模块化编程(二):AMD规范 Javascript模块化编程(三):Require.js的 ...
- Atititjs javascript异常处理机制与java异常的转换.js exception process
Atititjs javascript异常处理机制与java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw err ...
- Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae
Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异 ...
- javascript 时间日期处理相加,减操作方法js
javascript 时间日期处理相加,减操作方法js function dateAddDays(dataStr,dayCount){ var strdate = dataStr; // 2017年0 ...
- 爬虫模拟有道字典进行翻译,还发现了一条好玩的js
08.14自我总结 爬虫模拟有道字典进行翻译 一.代码 import requests from lxml.html import etree # headers= { # 'User-Agent': ...
随机推荐
- (转)mq经验总结-转
场景:学习mq相关的知识,发现这是一篇总结性很强的文章,转过来学习学习! 1 mq经验总结 首先了解什么是mq?mq的作用是什么? mq是通讯中间件.他的作用是省去开发人员开发通讯工具的时间,节省开发 ...
- (转)Java中equals和==的区别
java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号( ...
- hiernate-session
一.概述 Session 是 Hibernate 向应用程序提供操纵数据的主要接口,它提供了基本的保存.更新.删除和加载 Java 对象的方法. 二.Session 缓存 1.简介 (1)Sessio ...
- Python之系统交互(subprocess)
本节内容 os与commands模块 subprocess模块 subprocess.Popen类 总结 我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell ...
- 被DDOS攻击的解决方法
在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...
- swift UITextField光标聚焦以及光标颜色修改
光标聚焦闪烁: nick_textField.becomeFirstResponder() 光标颜色修改 nick_textField.tintColor = UIColor.red 备份:http: ...
- spring-session实现分布式集群session的共享
前言 HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的.但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户 ...
- Java获取指定时间的毫秒值的方法
有以下两种方法获取指定时间的毫秒值: 1.Calendar类 先由getInstance获取Calendar对象,然后用clear方法将时间重置为(1970.1.1 00:00:00),接下来用set ...
- C语言库函数探究
1.strlen()求字符串长度 //模拟实现strlen函数 #include<stdio.h> #include<stdlib.h> #include<string. ...
- bootstrap&NPM淘宝代理镜像
box-shadow 属性向框添加一个或多个阴影. < box-shadow: h-shadow v-shadow blur spread color inset; h-shadow必需.水平阴 ...