js介绍
JavaScript操作DOM的本质是=获取+触发+改变
目的:就是用来操作内存中的DOM节点
修改DOM节点的属性
过javascript语法组织逻辑代码操作DOM
BOM(window)它包含了DOM
DOM(document)
script脚本推荐放在最下边好处:防止因网络问题,页面加载时间长,出现空白;即便网络问题,浏览器也把DOM加载渲染完成,等待从服务端下载完js脚本,出现效果
css不放在最下面原因通俗地讲:好比先穿好衣服在出去,浏览器先把css样式准备好,在加载结构层,使得页面有样子;如果放在下面,因为页面是从上往下加载,没有css,就剩下裸露的标签,很难看,使得用户体验不好
1. 在HTML中大小写是不敏感的,但标准的JavaScript是区分大小写的
2. 分号表示语句结束。有换行,分号允许不加(建议加上,以免错误和歧义)
程序忽略缩进:提倡加上空格或TAB增强程序可读性
3. 标识符:成份是 不以数字开头的字母、数字 和下划线(_)、美元符($)
ECMA v3标准保留的JavaScript的关键字:
break case catch continue default delete do else false finally
for function if in instanceof new null return switch this
throw true try typeof var void while with
4. 变量的声明: var x,y; (变量没类型;未声明的变量也可以用,且是全局的;函数体内声明的变量则是局部的)
x=1; y="hello world!"; (变量的类型由所赋的值决定)
5. 函数: function 函数名 (参数){ 函数体; return 返回值;}
参数没类型或顺序,且可变长;可以使用变量、常量或表达式作为函数调用的参数
声明函数时,参数可不明写,调用时用 arguments[number] 接收。参数是值传递的。
函数由关键字 function 定义; 函数名的定义规则与标识符一致,大小写是敏感的
返回任意类型(不需写返回类型); 返回值必须使用return
//参数数量是可变的,若要限定参数数量,如下做法: (指定参数数量为0)
if ( arguments.length !== 0 ) throw Error.parameterCount();
caller: 调用此函数的函数。没有被调用则此变量为 null
arguments: 此函数的参数列表。
arguments.caller: 调用此函数的参数列表,没有被调用则为 undefined
arguments.callee: 此函数本身的一个引用。在匿名函数里会需要用到。
6. 数据类型:
基本类型: Number:数字、 String:字符串、 Boolean:布尔
特殊类型: Null:空、 Undefined:未定义
组合类型: Array:数组、 Object:对象
7. Number 数值类型:所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式
能表示的最大值是 ±1.7976931348623157 x 10^308;能表示的最小值是 ±5 x 10^ -324
10进制的整数的精确表达的范围是 -9007199254740992 (-2^53) 到 9007199254740992 (2^53)
16进制数据前面加上0x,八进制前面加0
保留多少位小数: var a = 111.115555; var b = a.toFixed(2); alert(b + ' : ' + typeof b); // 111.12 : string
8. String 类型:字符串常量首尾由单引号或双引号括起
没有字符,只有字符串(所有字符都按字符串处理)
常用转义符: \n换行 \'单引号 \"双引号 \\右斜杆 (字符串中部分特殊字符必须加上右划线\)
汉字常使用特殊字符写,如: \u4f60 -->"你" \u597d -->"好" (可避免乱码)
9. Boolean 类型:仅有两个值:true和false,实际运算中true=1,false=0
也可以看作on/off、yes/no、1/0对应true/false;主要用于JavaScript的控制语句
10.null, undefine 类型:
null 在程序中代表变量没有值;或者不是一个对象
undefined 代表变量的值尚未指定;或者对象属性根本不存在
有趣的比较:
null 与空字符串: 不相等, null 代表什么也没有,空字符串则代表一个为空的字符串
null 与 false : 不相等, 但是 !null 等于 true
null 与 0 : 不相等,(但是在C++等其它语言中是相等的)
null 与 undefined : 相等,但是 null 与 undefined 并不相同
11.数据类型转换:JavaScript属于松散类型的程序语言
变量在声明的时候并不需要指定数据类型;变量只有在赋值的时候才会确定数据类型
表达式中包含不同类型数据则在计算过程中会强制进行类别转换(优先级:布尔-->数字-->字符)
数字 + 字符串:数字转换为字符串
数字 + 布尔值:true转换为1,false转换为0
字符串 + 布尔值:布尔值转换为字符串true或false
函数 parseInt: 强制转换成整数(如果包含字符串,则转换到字符串为止,后面不再理) //如 parseInt("13a2")=13
函数 parseFloat: 强制转换成浮点数
函数 eval: 将字符串强制转换为表达式并返回结果,亦可将字节或变量转成数值。
函数 typeof: 查询数据当前类型(string / number / boolean / object ) ,未定义则返回“undefined”
12.运算符:(同java)
算术运算符: 加/字符连接(+)、 减/负号(-)、 乘(*) 、除(/)、 余数(% ); 递增(++)、 递减(--)
逻辑运算符: 等于( == )、 不等于( != ) 、 大于( > ) 、 小于( < ) ; 大于等于(>=) 、小于等于(<=)
与(&&) 、或(||) 、非(!) ; 恒等(===)、不恒等(!==)
位运算符: 左移(<<) 、有符号右移(>>);无符号右移(>>>)
位与(&) 、位或(|)、异或(^) 、NOT (~)
赋值运算符: 赋值(=) 、复合赋值(+= -= *= /= %= &= )
(先运行完右边的,再跟左边的进行赋值运算;如 var i=10;i-=5-3;结果8)
13.选择控制语句(同java)
if(...){...} else{...} if 语句允许不使用else子句;允许进行嵌套
switch(表达式){case 值1:语句1;break; case 值2:语句2;break; default:语句3;}
14.循环控制语句(类似java)
for (初始化;条件;增量){ 语句1; ... }
for-each遍历: for(var key in objs){var element=objs[key];...} // 注意: in 前面的是 key,而不是下标或者集合里面的元素,获取集合里的元素要使用 集合[key]
while (条件){ 语句1; ... }
do{语句1; ...}while(条件);
break, continue 跳出循环;还可配合标签使用
15.对象:JavaScript是一种基于对象语言,对象是JavaScript中最重要的元素
对象由属性和方法封装而成
javaScript包含四种对象:
内置对象 Date
自定义对象 Cart
浏览器对象 window
ActiveX对象 ActionXObject
16. 异常处理:
try{ ... } catch( e ) { ... } finally { ... }
try{ throw new Error("Err0"); } catch( e ) { alert(e.description); } finally { ... }
try{ throw "Err1"; } catch( e ) { if(e == "Err1") alert("错误!"); }
try{ ... } catch( e ) { alert(e.message || e.description); } // 查看出错提示
17.选取页面的对象:
var obj = document.forms["FormName"].elements["elementName"];
var obj = document.forms[x].elements[y]; //x和y 是int类型,表示第几个表单,第几个元素
var obj = document.FormName.elementName;
var obj = document.all["elementName"];
var obj = document.all["elementID"];
var obj = document.getElementById("elementID");
var obj = document.getElementsByName("elementName"); //返回数组
var obj = document.getElementsByTagName("TagName"); //返回数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端