最近这些天都在搞博客,没有什么新的知识点,今天终于了解了一些新的JS知识。其实,我对js一直都挺害怕的,害怕自己学不好,很沮丧…甚至感觉自己不是走前端这条路的。。。不过我会好好努力,尽自己最大的能力去学好它☺
纯属自己整理,如有错误,欢迎在留言板指出
①浏览器的准备工作
1.把变量,函数表达式的声明提升到当前的作用域顶端
2.把函数赋值
3.还有一些其他事情
②JS中的预解析机制
//js在执行的时候,会把所有的声明都提升到当前作用域的顶端。
例:
var a = '123';
var b = 15;
var c = function(){};
在js中是这么解析的:
var a,b,c;
a = '123';
b = 15;
c = function(){};
③作用域
什么是作用域呢?
作用域只有两种:1、全局作用域 2、局部作用域
全局作用域:它的定义很简单,如果一个变量或者函数是全局的,那么在任何地方都可以访问它们。在浏览器中,全局作用域其实就是window对象。咱们之前声明的变量,实际上就是在window对象上创建了一个属性。
var i = 10;//window.i = 10
全局变量怎么声明呢?不使用var关键字。
局部作用域,就是通过函数来创建。
function fn(){
var i = 20;
}
fn();
console.log(i);
*在js中都是全局作用域,if、for里没有作用域的概念,只有函数中的才是局部作用域。
*关于局部变量和全局变量:
1、全局变量可以在任何地方访问;
2、函数内部的变量,在外部是不可见的;
3、函数内部可以访问外部函数的变量;
4、局部变量指的是在函数内部的声明。
④创建函数的三种方式
1、声明函数(函数声明),就是使用function关键字 + 函数名声明的函数。
function fn(){
//do sth.
}
fn();
2、函数表达式,就是使用function关键字,没有函数名,赋值给一个变量的函数。
var fn = function(){
//do sth.
}();
//fn();
3、匿名函数,就是使用function关键字但是没有函数名的函数。
(function(){
//do sth.
})();
*区别:函数表达式可以使用()操作符,表示立即执行;声明函数不可以;
*()();第一个()把匿名函数定义成函数表达式,第二个()表示立即执行。
关于return返回值:每个function函数都有默认的return返回值,就是undefined。
function fn(){
console.log('hello world');
//有默认的返回值,undefined
}
console.log(fn());//打印出来看看返回值