Javascript s01
1.什么是javascript
基于事件和对象驱动的,并具有相对安全性能的客户端脚本语言
脚本语言,这东西不需要编译,是解释执行的.
兼容性问题
GOOGLE Chrome ->V8 引擎
Microsoft IE9 ->Charkra
Mozilla FireFox ->SpoderMonkey
2009年,Node.js ->服务端运行 基于V8引擎 代替php
2.如何在HTML中使用js?
4种方式,使用js
a.<script></script>
b.<a href="javascript:alert('haha')">点我试试</a>
c.<div onclick="alert('不让你点')">不要乱点</div>
监听事件,基于事件触发
d.<script src='01.js'></script>
等于PHP中的include.外嵌内容就不要在中间写内容
外部的扩展名是无所谓的.只要内容是JS
e.JS的执行顺序
从上往下,跳过函数
f.JS严格区分大小写(LINUX一样)
HTML也不区分
PHP函数不区分大小写,变量,常量等区分大小写
j.调试JS代码
1.alter($user) //弹出来
2.doucument.write($user); //php的echo
3.console.log($user); //控制台输出
h.JS中语法有错误时,浏览器会如何处理呢?
一旦有错时,可能整个代码都没有效果
分段去缩小范围去排除错误
i.规范
必须写上<!DOCTYPE html>
j.分号问题
js中,一句代码结束后的分号,可以有,可以没有,默认以换行符作为语句的分割
推荐写上分号
k.直接量(常量) 可以在程序代码中直接使用的数据
单引号和双引号一样,都不解析变量,但要注意嵌套关系,首选引号
l.注释
//单行
/* */多行
m.标识符(给变量起名字)
字母,数字,下划线,$
n.如何声明变量
直接使用标识符,作为变量名,但不能使用内部的关键字或保留字
var 变量名;
var 变量名=值; //声明时同时赋值
JS中,变量可以不声明,直接给变量赋值,会自动声明该变量
如果使用一个没有声明的变量,会出错
使用一个没有的属性的对象,会得到undefined,不会报错
3.保留字
a.关键字 if else function return var this new
b.当前版本不使用的,但以后可能用到的 class const enum export extends ...
c.js早期版本,将JAVA中所有关键字都保留了. abstract double ..
d.js中预定义的全局变量和函数 Number Array Function NaN(not a number) ...
4.变量的作用域
a.不在函数中声明的都叫全局变量
全局变量可以在任何地方使用,包括在函数中,也可以使用(像PHP的超全局变量)
b.在函数中声明的变量,是局部变量,只能在该函数及内部的函数中使用
<?php
$str="hahaha";
function test(){
echo 'aaa';
echo $GLOBALS['str'];
}
test();
?>
** c.如果声明局部变量不加 VAR 那么变成全局的.就算在函数中声明,也是全局变量
d.每一个函数,都有自己的作用域,内部的函数,都能用他定义的变量
e.如果可以不使用全局变量,就尽量不要用
5.变量声明提前
var num=5;
function test(){
//自动的隐示了 var num;
alter(num); //变量的提前声明;undefined;
var num=6;
alter(num); //6
}
6.数据类型
6种
typeof 运算符(跟加号 减号一样)
基本(原始)数据类型
:string , number , boolean
特殊(其他)数据类型
:function , undefined
测试函数的时候 typeof 函数名(不加括号)
function test(){alter('aaaaa');}
alter(typeof test); //function
var b=test;
alter(typeof b); //函数
对象(复合数据类型 )
:object
除了上面5种全是对象类型
null //null是一个特殊的值,是一种特殊的对象类型
alter(typeof []);数组在JS中也是一种特殊的对象
null 和 undefined 的区别
1.null是关键字,是一个特殊对象类型的值,不是数据类型
2.undefinded是一种数据类型,表示更深层次的"空",表示变量或属性没有被初始化
3.null和undefined都表示"值的空缺",很多时候可以相互转换,如果用==比较,是ture,
要用===才能区分
4.如果将它们转为boolean
alert(!!null) alert(!!undefined);
5.都不包含属性或方法
7.全局对象(global object)
JS的最顶层是一个对象
全局的函数和属性,都存在这个对象的中
var name='admin';
alter(this.name);
全局对象中的方法或属性可以不写对象名,直接使用
7.1 属性:
undefined
Infinity(无穷大) alert(2/0);
-Infinity(负无穷大) alert(-2/0);
NaN (Not a Num);
alter("张三" * "李四") //NaN
7.2 全局函数(方法):
a.isNaN(); is not a num 如果不是一个数,则返回ture
能认识用字符串表示的数 "1.5" "1.2e3"
b.parseInt("1.5rrrr") //1 跟PHP差不多
可以将字符串或小数转为整数
c.eval
eval("var a=5"); //直接把双引号去了.
var a=5
直接把代码给执行了
alert(a);
d.escape() 用于编码或者转译
var str="a#gf";
str=escape(str)
document.write(<a href=16.php?w=" "></a>)
e.unescape
7.3 构造函数
可以new 一个构造函数生成一个对象
String()
<?php
//常规使用类和对象,需要得到对象后,单独给不同的对象属性
class Student{
public $name;
//与类同名的是构造方法
public function Student(){
echo 'ha ha....';
}
public function sayHi(){
echo '大家好,我是'.$this->name;
}
}
$obj=new student();
Number()
Boolean()
Object()
Array()
Date()
RexExp()
7.4 预定义对象
Math
JSON
8.浏览器提供的全局对象 window对象
在客户端JS中,浏览器提供一个Window对象代表全局对象
用window对象,就等同于在用全局对象,也可以用this来指代
加入了更多的属性和方法
documont
alter()
location
setTimeout()
document.all IE特有,其他游览器,没有.
为什么全局对象中的属性或方法可以直接使用,我们自己的对象或方法,是否可以这么做?
with的作用
<script type="text/javascript">
var obj=new Object();
obj.name="张三";
obj.age=18;
with(obj){
alert(name);
}
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架