JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
一.JavaScript语法
1.注释分为 单行注释 (//)和 多行注释(/* */) 。
2.语法要求
2.1 区分大小写
2.2 标识符:
标识符指的是变量、函数、属性的名字,或者函数的参数。
标识符命名是有规范的
第一个字符必须是一个字母、下划线(_)或一个美元符号($),其他字符可以是字母、下划线、美元符号或数字
不能含有空格
不能以关键字或保留字命名
2.3 关键字:
关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符 (eg:break case default return typeof throw 等等 )
2.4保留字:
另外还一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字 (eg:abstract Boolean interface import implement等等 )
3.数据类型( 检测给定变量的数据类型-----格式为 typeof(a)或 typeof a ;)
五种简单的数据类型-undefined(值为定义)、null(值为空)、number(值是数字)、string(字符串)、boolean(布尔值)
一种复杂的数据类型-object(对象类型,例如数组)
4.操作符
4.1逗号操作符
逗号操作符多用于声明多个变量(var num1=3,num2=5;);但除此之外,逗号操作符还可以用于赋值。在用于赋值时,逗号操作符总会返回表达式中的最后一项(var num3=(2,3,4,6,8) alert(num3)-------num3=8)
4.2赋值操作符
赋值运算符并不是等于
eg:var a=4; 只是把4这个值赋值给变量a
4.3乘除法||求模操作符
乘法:
负负得正、正正得正、正负得负
如果有一个操作数是 NaN(非数值型),则结果是 NaN;
除法:
除法操作符由一个斜线符号(/)表示,执行第二个操作数除第一个操作数的计算
如果有一个操作数是 NaN,则结果是 NaN;
求模:
求模(余数)操作符由一个百分号(%)表示
如果操作数都是数值,执行常规的除法计算,返回除得的余数
求模的值的正负取决于被除数(前面的值)
4.4加减法操作符
加法:
如果有一个操作数是 NaN,则结果是 NaN
如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来
如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来
减法:
如果两个操作符都是数值,则执行常规的算术减法操作并返回结果
如果有一个操作数是字符串、布尔值、null 或 undefined,则先在后台调用 Number()函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转换的结果是 NaN,则减法的结果就是 NaN;
4.5关系操作符:
如果两个操作数都是数值,则执行数值比较
如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较
如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。
NaN 和任何数值相比都是 false
4.6相等操作符:
确定两个变量是否相等是编程中的一个非常重要的操作
等于(==)的情况下只要值相同就返回True
不等于(!=)如果两个操作数值不相等,则返回 true
这两个操作符都会 先转换操作数(通常称为强制转型),然后再比较它们的相等性
全等(===)的时候需要值和类型都要匹配才能返回True,它只在两个操作数未经转换就相等的情况下返回 true,不全等操作符 (!==)在两个操作数未经转换就不相等的情况下返回 true
4.7逻辑操作符
4.7.1逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反
4.7.2逻辑与&&:
1、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
2、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
4.7.3逻辑或||:
1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
二.JavaScript函数
函数可以分为 有参数函数 和 无参数函数
无参函数:
eg:
<!DOCTYPE html> <html> <head> <script> function myFunction() { alert("Hello World!"); } </script> </head> <body> <button οnclick="myFunction()">点击这里</button> </body> </html>提示: JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
有参函数:可以发送任意多的参数,由逗号 (,) 分隔即可
eg:
<button οnclick="myFunction('Bill Gates','CEO')">点击这里</button> <script> function myFunction(name,job) { alert("Welcome " +name
+ ", the " +job
); } </script>
弹出输出框显示为字符串拼接(+): 字符串welcome拼接上name参数的值再拼接上,the最后拼接上job参数的值
带有返回值得函数:
返回值基于传递到函数中的参数
eg:
<p id="demo"></p>
<script>
function myFunction(a,b)
{
return a*b;
}
document.getElementById("demo").innerHTML=myFunction(4,3);
"demo" 元素的 innerHTML 将是:12
(JavaScript 获取标签:
通过ID名获取:document.getElementById ('标签id名')
通过标签名获取:document.getElementsByTagName ('标签名'))
匿名参数:
var a=function (a,b){ //匿名函数
alert(a+b);
}
a(3,4);
三.JavaScript作用域
作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期
作用域分为全局作用域和局部作用域
如果在局部(函数)中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁
全局作用域的变量和函数在浏览器关闭时退出
特殊例子:
var a=1; //全局变量
function num1(){
var a=2; //局部变量
alert(a);
function num2(){
var a=3;
alert(a);
function num3(){
var a=4;
alert(a);
}
num3(); //注意位置 如果num2和num3都写到num1结束后则没有结果
}
num2();
}
num1();
alert(a); //输出 2 3 4 1
四.JavaScript 声明提升:
浏览器引擎对 JavaScript 代码的处理过程:包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理
函数优先
提升操作会优先进行函数的声明
函数会首先被提升然后才是变量,重复的变量声明会被忽略,只剩下赋值操作,多个函数声明可以进行覆盖
声明的顺序是这样的:
1. 找到所有的函数声明,初始化函数体,如有同名的函数则会进行覆盖
2. 查找变量声明,初始化为undefined,如果已经存在同名的变量,就什么也不做直接略过
五.JavaScript事件
事件一般是用于浏览器和用户操作进行交互
onblur ----元素失去焦点
onfocus---元素获得焦点
onclick---鼠标单击
ondblclick---鼠标双击
onkeydown---键盘的键被按下
onkeyup---键盘的键被松开
onload---某个页面或图像被完成加载
onmousedown---某个鼠标按键被按下
onmouseup---鼠标被移开
onmouseover---鼠标被移到某个元素之上
onmouseout---鼠标从元素移开
小例子:
<input type="text" id="ly" value="请输入姓名">
<script>
var ly=document.getElementById('ly');
ipt.οnfοcus=function(){
if(ly.value=="请输入姓名"){ //此ly是上面定义的变量名字
ipt.value="";
}
}
ipt.οnblur=function(){
if (ly.value==""){
ly.value="请输入姓名";
}
}