JavaScript之基本概念(一)
在我们学习一门编程语言之前,我们应该先了解它的一些基本概念,包括它是什么,它能用来干什么,怎么用等等。
一 何为“JavaScript”
1 、 什么是JavaScript?
W3School上的定义:JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。
我们平常所说的JavaScript其实是由3部分组成:核心(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)。
ECMAScript:
ECMAScript并不与任何浏览器相帮绑定,也没有提供任何用户输入输出的方法,它只是简单描述了:语法、类型、语句、关键字、保留字、运算符、对象,这些脚本语言的属性和方法,以及对象。
Web浏览器只是ECMAScript的一个宿主对象,其他的实现还有例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript等等,我们说的JavaScript就是浏览器在ECMAScript的基础上扩展了DOM和BOM的一种实现。
DOM:
MDN上的定义如下:DOM(Document Object Model——文档对象模型)是用来呈现以及与任意 HTML 或 XML文档交互的API。DOM 是载入到浏览器中的文档模型,以节点树的形式来表现文档,每个节点代表文档的构成部分(例如:页面元素、字符串或注释等等)。
DOM 是万维网上使用最为广泛的API之一,因为它允许运行在浏览器中的代码访问文件中的节点并与之交互。节点可以被创建,移动或修改。事件监听器可以被添加到节点上并在给定事件发生时触发。
DOM 并不是天生就被规范好了的,它是浏览器开始实现JavaScript时才出现的。这个传统的 DOM 有时会被称为 DOM 0。现在, WHATWG维护DOM现存标准。
BOM:
BOM其实没有标准的官方定义,但现代浏览器基本上都实现了一些相同的属性和方法,以实现JavaScript与浏览器之间进行“对话”。
2 、 JavaScript发展史
Netscape(网景)在1995年的时候,凭借其Navigator浏览器成为互联网时代的第一代霸主。由于网景公司想在静态的html页面上搞点动态的效果出来,于是叫一个叫做Brendan Eich的牛人开发一门语言,据说这哥们只用了两个星期就搞出了JavaScript,至于为什么叫这个名字?网上都是说是想蹭Java的热度!但事实上,他俩一点关系都没有。
后来的“三足鼎立”、标准化历程、版本发布等等内容网上有很多,这里就不细讲了,有兴趣的同学可以自行上网搜一搜。
3、 JavaScript的特点
a:它是解释性语言,执行的时候才逐条翻译成计算机能识别的代码。不同于其他编译型语言(C,JAVA等),需要预先通篇翻译好后才能执行。
b:它是跨平台的,不依赖任何操作系统,仅需要宿主对象的支持。这就是解释性语言的好处。
c:它是基于对象的语言,JS里面一切皆对象。既可以自己创建,也可以是用语言预定义的对象。
d:它采用弱类型的数据类型,编程更简单,不用考虑变量的实际数据类型,可以直接操纵。
e:它是单线程的,代码执行自上而下,出错立马报错、阻塞。
二 JavaScript的引入方式
因为JS是一种脚本语言,所以它主要是嵌入在HTML源码中运行的。理论上<script>标签可以放在页面的任何位置,但常用的方式是:外部引入放在head标签内,内部代码放在body结束标签之前。不过这不是绝对的,按需引入才是王道。
1、外部引入:
<script type="text/javascript" src="URL"></script>
通过在src属性添加链接引入。
其实现代浏览器已基本默认了JavaScript为其默认脚本语言,所以script标签的type属性是可以省略的。
2、内部代码:
<script>
//这里是执行代码
</script>
直接在script的开始和结束标签之间编写代码。
注意:script标签可以有多个,默认将按照编写顺序加载和执行,关于JS的异步加载,这里不是我们关注的重点,以后有时间会单独讲。
另外,html有一个标签<noscript>,如果用户浏览器不支持JavaScript或者禁用了它,那么浏览器将显示该标签内的信息。
<noscript>
你的浏览器可能不支持JavaScript或已禁用!
<noscript>
<script>
//some code
<script>
三 JavaScript的输出方式和注释
1、JS的注释有两种:
单行:
<script>
//我是单行注释
</script>
多行:
<script>
/*
我是多行注释
*/
</script>
2、JS的输出方式:
a:控制台输出:
<script>
console.log("hello world");
</script>
可以在浏览器内使用F12键打开控制台。
b:页面输出:
<script>
document.write("hello world");
<script>
这会覆盖原有页面。
c:提示框输出:提示框分为三种:alert()警告框,confirm()确认框,prompt()提示框。
<script>
alert("警告!");
confirm("确认?");
prompt("请输入:");
<script>
请在控制台依次键入上面三种提示框,注意观察它们的区别!
下次更新将介绍JavaScript中的标识符和数据类型,敬请期待!
JavaScript之基本概念(一)的更多相关文章
- javascript,jquery(闭包概念)(转)
偶尔听人说javascript闭包,让我联想起以前学编译原理和数字逻辑里讲的闭包,以前上课讲的闭包很难懂,而且含有递归的意思在里面,现在不想再查看里面的闭包概念. 但javascript我是经常要用, ...
- JavaScript之DOM概念
一.DOM概念 1.DOM是什么? 1.1 起源.DOM起源于Netscape与Microsoft 公司的DHTML(动态HTML). 1.2 名词解释.Document Object Model,文 ...
- JavaScript的基本概念
主要内容: 语法 数据类型 流控制语句 理解函数 ECMA-262描述了JavaScript语法等基本概念.目前,ECMA-262第3版中定义的ECMAScript是各个浏览器实现最多的版本.所以主要 ...
- JavaScript 的基本概念( ES5 )
语法 区分大小写 标识符 第一个字符必须是一个字母,下划线或者一个美元符( $ ).其他规则无论,最好按照通用的驼峰大小写. 注释 // 单行注释 /* 多行注释 */ 严格模式 在顶部添加如下代码 ...
- JavaScript闭包的概念及用法
1.闭包的概念: 闭包就是能够读取其他函数内部变量的函数. 例如: function f1(){ var n=999; function f2(){ alert(n); } return f2; } ...
- JavaScript函数的概念
函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...
- javascript中重要概念-闭包-深入理解
在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入.本人经过一段时间的学习,对闭包的概念又有了新的理解.于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给 ...
- JavaScript一些关键概念
垃圾回收:http://www.cnblogs.com/dolphinX/p/3348468.html 引用计数和标记清除 作用链和闭包:http://www.cnblogs.com/dolphinX ...
- [javascript|基本概念|一元操作符]学习笔记
只操作一个值的操作符 递增/递减操作符 前置型/后置型 前置型:操作符位于操作数前面 e.g.: var a = 30; ++a; 等同于 var a = 30; a = a + 1; --> ...
随机推荐
- 聊聊我在这家公司设计的SSO
最近小明遇到一个需求:需要将几个独立的系统(子系统)汇总到一个集中的系统(父系统)当中,当用户在父系统登录过后,再点击这几个子系统,就可以免登录跳转到任意一个系统.当时一听,duang~duang~就 ...
- mysql的优化策略
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 综述 | SLAM回环检测方法
本文作者任旭倩,公众号:计算机视觉life成员,由于格式原因,公式显示可能出问题,建议阅读原文链接:综述 | SLAM回环检测方法 在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿 ...
- macbook 安装redis流程及问题总结
Mac安装redis流程和总结 一.redis安装流程: 1.进入redis官网-->点击download-->选择稳定版本(stable)-->点击Download即可. 2.将下 ...
- 【Jmeter】- 使用 jmeter 进行 dubbo 接口测试
大家都知道 dubbo 是一个优秀 rpc 框架,它一般(dubbox 除外)通过对外提供 tcp协议的接口进行外部调用.而我们日常使用的测试工具 jmeter 并不支持 dubbo 协议的请求.所以 ...
- Drop Table对MySQL的性能影响分析
[问题描述] 最近碰到有台MySQL实例出现了MySQL服务短暂hang死,表现为瞬间的并发线程上升,连接数暴增. 排查Error Log文件中有page_cleaner超时的信息,引起我们的关注: ...
- UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 16: illegal multibyte sequence
报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 16: illegal multibyte sequence ...
- [python]标准比较运算符
1. python的标准比较运算符,根据表达式的值的真假返回布尔值. 比较运算符: < <= > >= == != <> >>& ...
- CFdiv2 165E. Compatible Numbers 子集枚举
传送门 题意: 给出一个序列,输出每个数x对应的一个ans,要求ans在数列中,并且ans & x = 0:数列的每个数小于(4e6) 思路: 这道题的方向比较难想.想到了就比较轻松了,可以 ...
- CodeForces 590C Three States BFS
Three Statesy 题解: 以3个大陆为起点,都dfs一遍,求出该大陆到其他点的最小距离是多少, 然后枚举每个点作为3个大陆的路径交点. 代码: #include<bits/stdc++ ...