摘要:只是浏览器只是实现可能的宿主环境之一,其他宿主环境包括和。级别级由两个模块组成核心和。有效不推荐有一点必须注意,即用操作符定义的变量将成为定义该变量的作用域的局部变量。会返回判断相等符认为两者相等。显示因此尽量避免这样运算。
一:JavaScript组成部分
JavaScript是由三个不同部分组成的,核心(ECMAScript) 、文档对象模型(DOM)和浏览器对象模型(BOM)。
1.ECMAScriptECMAScript与Web浏览器没有依赖关系。只是Web浏览器只是ECMAScript实现可能的宿主环境之一,其他宿主环境包括Node和Adobe Flash。它规定了这门语言的组成部分:
1.语法
2.类型
3.关键字
4.保留字
5.操作符
6.对象
文档对象模型(Document Object Model)是针对XML但经过扩张用于HTML的应用程序编程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层次节点结构。以HTML代码为例子
DOM DOM
Hello world
根据 DOM,HTML 文档中的每个成分都是一个节点。DOM 是这样规定的:整个文档是一个文档节点。每个 HTML 标签是一个元素节点。包含在 HTML 元素中的文本是文本节点。每一个 HTML 属性是一个属性节点。注释属于注释节点
每个节点彼此都有等级关系,HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。除文档节点之外的每个节点都有父节点。
以上列代码分析,
节点。
大部分元素节点都有子节点。比方说,
是同辈,因为它们的父节点均是
DOM1级由两个模块组成:DOM核心和DOM HTML。其中,DOM核心规定是如何映射基于基于XML的文档结构,以便简化对文档中任意部分的访问和操作,DOM HTML则在DOM核心的基础上加以扩展,添加了针对HTML文档的对象和方法。
DOM2级在DOM的基础上又扩展了鼠标和用户界面事件、范围、遍历(迭代DOM文档的方法)等细分模块,而且通过对象接口增加对CSS的支持。
DOM3级则进一步扩展了DOM,引入了以统一方式加载和保存文档方法—在DOM加载和保存模块中定义;新增了验证文档的方法—在DOM验证模块定义。
开发人员可以通过BOM来控制浏览器显示的页面以外的部分。从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯也把所有针对浏览器的JavaScript扩展算作BOM一部分。
1.弹出新浏览器窗口功能;
2.移动、缩放和关闭浏览器窗口的功能;
3.提供浏览器详细信息的navigatior对象;
4.提供浏览器所加载页面的详细信息的location对象;
5.提供用户显示器分辨率详细信息的scree对象
6.对cookies的支持
7.像XMLHttpRequest和IE的ActiveXObject这样的自定义对象。
在HTML中插入JavaScript的主要方法,就是使用"); } 时候,就会认为那是结束的标签。而通过转义字符""解决这个问题,例如:
"); }三:JavaScript 基本概念
3.1 区分大小写
JavaScript是区分大小写的,也就是说变量、函数、关键字和所有标识符都是区分大小写的。
所谓的标识符,就是指得是变量、函数、属性的名字,或者函数的参数。标识符可以是按照下列格式规则组合起来的一或多个字符:
a.第一个字符必须是一个字母、下划线或一个美元符号($); b.其他字符可以是字母、下划线、美元符号或数字。
3.2 注释
JavaScript支持两种注释,包括单行注释和块级注释。
单行注释以//开头,如://单行注释
多行注释则以一个斜杠和一个星号(/)开头 以一个星号和一个斜杠( /)结尾。
3.3保留字和关键字
JavaScript把一些标识符拿出来作为自己的关键字。因此,不能再在程序使用这些关键字作为标识符。如break、do、instanceof、typeof、var、case、if、while、function 和for等等...
保留字虽然还没有任何特定的用途,但它们将来可能用作关键字。如:int、short、boolean、goto和byte。
3.3变量
JavaScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个保存值的占位符而已。定义变量时候要使用var操作符,后跟变量名(标识符):var message;初始化的过程就是给变量赋一个值,因此,可以在修改变量值同时修改值的类型。
var message = "hi"; message = 100 //有效不推荐
有一点必须注意,即用var操作符定义的变量将成为定义该变量的作用域的局部变量。也就是说,在函数中使用var定义一个变量,那么这个变量在函数退出后就会销毁,除非定义一个全局变量。
function test(){ var a = "hello,wythe";//局部变量 b = "hello world";//全局变量 } test() console.log(a)//错误,a没有定义。 console.log(b)//hello,world
3.4数据类型
JavaScript的数据类型分为两类:原始类型和对象类型。原始类型包括数字(numner)、字符串(string)、布尔值(boolean)、undefined和null。对象类型则有object,object是属性的集合,每个属性都由名/值对(值可以是原始值,比如数字、字符串,也可以是对象)构成。
3.4.1typeof操作符
由于JavaScript是松散类型,因此需要有一种手段来检测给定变量的数据类型——typeof。对一个变量使用typeof操作符可能返回下列字符串:
"undefined"—如果这个值未定义;
"boolean"—如果这个值是布尔值;
"string"—如果这个值是字符串;
"number"—如果这个值是数值;
"object"—如果这个值是对象或null 数组也是对象,数组是一种特殊对象,表示带编号的值的有序集合
"function"—如果这个值是函数。函数是一种特殊对象,函数具有与它相关联的可执行代码的对象。通过调用函数来运行可执行代码,并返回运算结果
对于null,typeof返回的是object,那是因为null被认为是一个空对象的引用。
3.4.1 undefined类型
undefined类型只有一个值,那就是undefined。是变量的一种取值,表明值没有初始化。
3.4.2 null类型
null类型也是只有一个值,那就是null。typeof null 返回的是"object"也就是可以认为是一个特殊的对象值,含义是“非对象”。
undefined跟null都是表示值的空缺。null == undefined 会返回true 判断相等符“==” 认为两者相等。这个操作符出于比较的目的会转换其操作数。
3.4.3 number类型
JavaScript是不区分整数值和浮点数值的。最基本的字面量格式是十进制整数,除了十进制以外,还支持八位制(在严格模式下无效)或十六进制的字面值表示。浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。浮点数值的最高精度是17位小数,但在进行算术计算的时候其精确度远远不如整数。
var a = 0.1, b = 0.2; if(a+b == 0.3){ console.log("bingo"); }else{ console.log("error");//显示error }
因此尽量避免这样运算。NaN,即非数值是个特殊的值,这个数值表示一个本来要返回数值的操作数未返回数值的情况。0除以0会返回NaN,正数除以0返回Infinity,负数除以0返回-Infinity。NaN与任何值都不相等,包括自身。因此JavaScript定义isNaN函数,isNaN接受一个参数,该参数可以是任何类型,函数会判断该参数是否“不是数值”。isNaN接收一个之后,会尝试把这个值转为数值。
isNaN(1); //false isNaN("10");//会转换为数值10,返回false isNaN(true);//转换为数值1,返回false isNaN("blue");//不能转换为数值,返回true isNaN("true");//不能转为数值,返回true isNaN("11blue");//true,不能转为数值
数值转换有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat().第一个函数(Number)可以用于任何数据类型,而另两个函数专门把字符串转换为数值。
Number()函数的转换规则如下:
如果是布尔值true和false,则分别转换为1和0
如果是数字值,则返回该数值
如果是null值,则返回0
如果是undefined,则返回NaN
如果是字符串,如果字符串只包含数字的话,则将其转为十进制数值,即“1”转为1,“123”则是123,“011”转为11(忽略前导的0),“11.1”则为11.1,"0xf"则转为相同大小的十进制整数。如果字符串是空,则将转为0;除此以外其他字符串,则转为NaN(“122blue”,“0a”,"a")。
如果是对象,则调用对象的valueOf()方法,然后按照前面规则转换返回的值。如果转换的结果是NaN,则调用对象toString()方法,再次按照前面的规则转换返回的字符串值。
譬如Number({a:2})返回的是NaN,而Number([1])返回的是1
未完待续...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/80013.html
摘要:请回复这个帖子并注明组织个人信息来申请加入。权限分配灵活,能者居之。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。导航归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...
摘要:从最开始的到封装后的都在试图解决异步编程过程中的问题。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。异步编程入门的全称是前端经典面试题从输入到页面加载发生了什么这是一篇开发的科普类文章,涉及到优化等多个方面。 TypeScript 入门教程 从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript。 网络基础知识之 HTTP 协议 详细介绍 HTT...
摘要:请回复这个帖子并注明组织个人信息来申请加入。版笔记等到中文字幕翻译完毕后再整理。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。主页归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1...
摘要:笔者作为一位,将工作以来用到的各种优秀资料神器及框架整理在此,毕竟好记性不如烂键盘,此前端知识点大百科全书前端掘金,,不定期更新技巧前端掘金技巧,偶尔更新。计算数组的极值技巧使你的更加专业前端掘金一个帮你提升技巧的收藏集。 CSS 样式画各种图形 - 前端 - 掘金下面是一些我在 CSS 中经常用到的图案,还有一些是在css-tricks看到的。记录一下,以后会用到。会持续更新… 一、...
阅读 2520·2023-04-26 02:57
阅读 1403·2023-04-25 21:40
阅读 2154·2021-11-24 09:39
阅读 3556·2021-08-30 09:49
阅读 759·2019-08-30 15:54
阅读 1165·2019-08-30 15:52
阅读 2067·2019-08-30 15:44
阅读 1273·2019-08-28 18:27