JavaScript基础学习一(javascript XHTML 文档模式 变量 数据类型)

本文详细阐述了JavaScript的核心组成部分,如ECMAScript、DOM和BOM,以及如何在页面中有效插入JavaScript代码,强调了XHTML在JavaScript脚本中的应用技巧。同时,介绍了文档模式的概念、使用noscript元素确保页面的兼容性,并讨论了JavaScript变量、数据类型及其特性。通过实例展示了如何在JavaScript中定义变量、数据类型和操作符,并提供了严格的模式使用方法。此外,文章还涵盖了变量的作用域、函数内部的使用场景及JavaScript中的严格模式。最后,对JavaScript中的基本数据类型进行了详细介绍,并探讨了字符串、对象和数组的特性和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些人把知识学完了去做事,有些人做事的过程中学知识,其实第一种是应该被推崇的,优点不必多说,但现实中,很多人是属于第二种的,当然就包括了我。

现在事情做完了,其中的痛苦只有自己知道,所以回过头来系统的学习是有必要的,我会在这里不断更新js重要相关知识点。


1. JavaScript三大组成部分:

1.ECMAScript 核心     2. DOM 文档对象模型     3.BOM 浏览器对象模型

2. 向页面中插入JavaScript:

为了防止加载延迟,一般放在<body>元素中页面内容后面

<span style="font-size:14px;"><span style="font-size:14px;">	<scrpit src="test.js"  async="async"   charset="UTF-8"  defer="defer"  language="javascrpit" type="text/javascript"></span></span>

defer 延迟加载  表示浏览器立即下载,但延迟执行,只适用于外部脚本文件,H5忽略

async 异步加载  立即下载,不让页面等待脚本的下载和执行,不必等待其他脚本,也不必阻塞文档呈现;

异步脚本一定在页面load事件前执行,但可能在DOMContentLoaded时间前后执行。

3. XHTML(Extensible HyperTest Markup Language)可扩展超文本标记语言  

编写严格,小于号(<)会当作新标签来解析,从而造成<script>内js语句解析错误,解决方法:

(1)用HTML实体(&lt;)替换代码中所有小于号(<)

(2)用CData片段来包含Js代码,例:

<span style="font-size:14px;"><span style="font-size:14px;"><script type="text/javascript">
<![CDATA[
    js  code
]]>
</script></span></span>
对于不兼容XHTML浏览器,使用javascript注释将CData标记注释掉就可以了

<span style="font-size:14px;"><span style="font-size:14px;"><script type="text/javascript">
//<![CDATA[
    js  code
//]]>
</script></span></span>

4. 推荐使用外部文件优于嵌入代码:可维护性,可缓存,无需考虑XHTML或注释hack等兼容;

5. 三种文档模式:混杂模式,标准模式,准标准模式  ;  后两者模式非常接近,可以统称为标准模式

如果在文档开始处没有发现文档类型声明,浏览器默认开启混杂模式,不同浏览器下行为差异很大,所以一定要写啊!

标准模式的文档类型   

<span style="font-size:14px;"><span style="font-size:14px;"><!-- HTML 4.01  严格型 -->
< !DOCTYPE HTML PUBLIC "- / /W3C / /DTD HTML 4.01 / / EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0  严格型 -->
<!DOCTYPE html PUBLIC "- / /W3C/ /DTD XHTML 1.0 Strice / /EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--HTML5-->
<!DOCTYPE html></span></span>
准标准模式,可以使用过渡型(transitional)或框架集型(frameset)文档类型来触发,具体代码可以Google到,就不写了

由于一直进行H5页面的开发,使用的都是HTML5文档类型,也正是现在的大趋势。

6. <noscript>元素,当浏览器不支持javascript时如何让页面平稳退化。

例如向用户显示一条信息:

<span style="font-size:14px;"><span style="font-size:14px;"><noscript>
    <p>本页面需要开启javascript的支持!
</noscript></span></span>

7. 严格模式:为javascript定义了一种不同的解析与执行模型。

在整个脚本中启用严格模式  ,顶部添加代码 "use strict";

函数内部上方包含"use strict" 指定函数在严格模式下执行;

8.变量 

var操作符定义的变量将成为定义该变量的作用域中的局部变量,

如果省略var操作符,将创建一个全局变量,只要调用过一次函数,这个变量就有了定义,不会在函数调用后被销毁,在函数外部的任何地方可以被访问。

可以用一条语句定义多个变量,因为每个变量仅仅是一个用于保存值的占位符而已:

<span style="font-size:14px;">var msg= "hi",
      give = true;
      age = 34;</span>
9.数据类型:

5种简单数据类型(基本数据类型):Undefined , Null , Boolean , Number , String 

1种复杂数据类型:Object

(1) 使用typeof操作符:返回的字符串

"undefined"——如果这个值未定义

"boolean"——如果这个值是布尔值

"string"——如果这个值是字符串

"number"——如果这个值是数值

"object"——如果这个值是对象或null
"function"——如果这个值是函数

<span style="font-size:14px;">var msg ="hello world"
alert(typeof msg);   //string
alert(typeof (msg)); //string
alert(typeof 100);   //number</span>
(2)Undefined类型
未经初始化的值默认取得undefined,对于未经初始化和未声明的变量执行typeof操作符都会返回undefined值。

(3)Null类型

null值表示一个空对象指针,typeof操作符检测null值时会返回"object"

只要在意保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值

(4)Boolean类型

ECMAScript中所有类型的值都有与Boolean值等价的值,调用转型函数Boolean();

Booleanturefalse

String任何非空字符串""空字符串

Number任何非零数字值0和NaN

Object任何对象null

UndefinedN/A(不适用)undefined

(5) Number类型

使用IEEE754格式(造成浮点数值计算舍入误差)来表示整数和浮点数值。

十进制,八进制(077),十六进制(0x1A);

浮点数值需要的内存空间是整数值的两倍;

用科学计数法表示浮点数值 3.25e7 , 3e-7;

浮点数值最高精度17位;

数值范围: 最小值保存在Number.Min_VALUE中(5e-324),最大值保存在Number.MAX_VALUE中(1.7976931348623157e+308)

如果结果得到了一个超出Javascript数值范围的值,这个数值将被自动转换成特殊的Infinity值(-Infinity/Infinity)。

使用isFinite()函数确定一个数值是不是有穷的。

NaN(Not a Number)非数值用于表示一个本来要返回数值的操作数未返回数值的情况,NaN与任何值都不相等,包括NaN本身。

isNaN()函数用于确定参数是否“不是数值”,isNaN()在接收到一个值之后,会尝试将这个值转换为数值。

转型函数Number()可以用于任何数值类型;

parseInt() parseFloat() 专门用于把字符串转换成数值;

parseInt()会忽略字符串前面的空格,直至找到第一个非空格字符,如果第一个字符不适数字字符或者负号,返回NaN;如果是数字字符,继续解析,直到解析遇到一个非数字字符,后面的字符会被完全忽略。

由于ECMAScript 5 JavaScript引擎中,parseInt()已经不具有解析八进制值的能力,建议使用parseInt()时指定转换时使用的基数,即第二个参数,指定使用多少进制,例如:parseInt("070",8);建议无论在什么情况下都明确指定基数。

parseFloat()与parseInt()的区别:第一个小数点是有效的;只解析十进制数值,没有用第二个参数指定基数的用法,解析可解析为整数的数时,会返回整数。

(6)String类型

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。

字面量(转义序列):\n \t \b \r \f \\ \' \'' \xnn \unnnn。

字符串是不可变的,改变某个变量保存的字符串,先要销毁原来的字符串,再用另一个包含新值的字符串填充该变量。

转换为字符串两种方式:

toString() ——null undifined没有这个方法 ,可以传递一个参数:输出数值的基数

String()——将任何类型的值转换为字符串

(7)Object类型

var o = new Object();  在ECMAScript中,Object类型是所有它的实例的基础。

属性和方法:

constructor:保存着用于创建当前对象的函数;

hasOwnProperty(propertyName):检查给定的属性在当前对象的实例中是否存在;

isPrototypeOf(object):检查对象是否为传入对象的原型;

propertyIsEnumerable(propertyName):检查给定的属性是否能够使用for-in语句来枚举;

toLocalString():返回对象的字符串表示,该字符串与执行环境的地区对应;

toString():返回对象的字符串表示;

valueOf():返回对象的字符串、数值、或布尔值表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值