JS 的基本语法
一、JS基本知识
1、JS的字面量和变量
·不可改变的值,也称常量,可以直接使用,但不会直接使用常量,通常放在变量里面保存。
·变量的声明
var a
2.JS中的数据类型
-
基本数据类型(五大类)
String,Number,Boolen,Undefined,Null
-
引用数据类型
Object,Function,Array
在栈内存保存一段地址,指向堆内存中的对象,所以当两个对象指向同一段地址时,里面的属性改变,另一个指向该属性的对象也改变
当比较两个引用的数据类型时,比较的是他们的内存地址
3.判断
-
type of(A type of B)
返回数据类型的字符串表达 例如:‘String’
注意:Null和Object无法判断 Object和Arr无法判断
-
instanceof
专门用来判断对象类型(实例化)
-
===(全等)
4.JS中对象的分类
- 内建对象:java中的对象
- 宿主对象:浏览器中的对象(BOM,DOM)
- 自定义对象:开发人员创建的对象
二、JS对象的基本操作
1.创建js对象
var obj = new Object();
//Object()调用函数,new关键字来构造函数
2.向js对象中添加属性
向对象中添加属性
//对象.属性名='属性值'
obj.name='张三';
//当使用特殊的属性名时
obj["属性名"]='属性值'
3.删除JS属性
delete obj.name;
//delete 对象.属性名
4.in运算符
//"属性名" in obj
"name" in obj;
检查obj中是否有该属性,返回true or false
三、JS函数
函数也是一个对象,但封装了一些功能,在需要时执行。
1.创建一个函数
var fun = new Fuction();
要封装的代码卸载构造函数,函数中的代码会在调用中运行调用函数,当调用函数时,函数中的代码会执行
2.使用函数声明创建js函数对象
1.function 函数名 (形参1,形参2,…){
函数调用语句1;
函数调用语句2;
}
2.function 函数名(){
js代码;
}
当调用该函数时会调用该函数里面的代码
3.var 函数名= function(){ };
将匿名函数赋值给一个函数对象
3.函数的参数
(1)定义一个求和函数
function sum(a,b)
(2)调用函数
sum(1,2)
4.函数的返回值
可以使用return值,定义一个变量来接收一个结果,但写在return之后的语句都不再执行
若不写return或return之后没有返回值,返回undefined
5.立即执行函数/匿名函数自调用
(function(){...})();
//会立即执行,执行一次
6.枚举对象中的属性
for(var index in obj){
//有几个对象就执行几次
}
四、作用域
1.全局作用域
- 在页面打开时创建,页面关闭时销毁
- 在全局作用域中,有一个全局对象window,代表浏览器窗口,它由浏览器窗口创建,我们可以直接使用
- 在全局作用域中,创建的变量都是window对象的属性,创建的方法都是window对象的方法(window.alert()或alert())
2.变量、函数提升(变量、函数的声明提前)
(1)变量提升: 通过var来定义(声明)一个变量,在定义此语句之前就可以访问到该变量,只是该变量还未赋值,显示undefined
<script>
console.log(a)//undefined
var a= 1;
console.log(a)//1
</script>
(2)函数提升:通过function声明的函数,在浏览器创建时就已经创建好此函数,所以在function代码块前面的函数,已经可以调用function了
fun();//可以调用
function fun(){
console.log("hello!")
}
(3)通过var方法定义的函数,属于第(1)种情况(变量声明),所以显示undefined
console.log(fun)//undefined
var fun=function (){
console.log("hello!")
}
console.log(fun)//hello!
3.函数作用域
(1)写在function内部的内容,在函数调用时创建,在函数结束时销毁。
(2)每调用一次函数就会产生一个新的作用域。
function fun(){
console.log("hello!")
}
fun();
(3)在函数作用域中,可以访问全局变量。
var a=123;//全局变量
function fun(){
console.log(a)//输出123,可以访问全局变量
}
fun();
(4)若在函数中定义一个与外面相同变量名的变量,函数会优先在内部找
var a=123;//全局变量
function fun(){
var a=456;//在函数调用时创建,在函数结束时销毁
console.log(a)//输出456,因为函数内部有a,优先使用函数内部的
}
fun();
console.log(a)//输出123,函数内部的a已经销毁
(5)如果在函数内部没有声明var的变量,都默认是全局变量,会修改全局变量的值
var a=123;//全局变量
function fun(){
a=456;//没声明var,默认是全局变量的a,修改a=456
console.log(a)//输出456,因为函数内部有a,优先使用函数内部的
}
fun();
console.log(a)//输出456,全局变量a已经被修改