函数
/*
function [函数名]([参数1,参数2,。。。。]){
// 函数体 代码块
[return 值]
}
*/
/*
1. 函数声明
function 函数名(){}
2. 函数表达式
var 变量名 = function [函数名](){}
*/
function fn1 (){
console.log(1);
}
var fn2 = function(){
console.log(2);
}
fn1();
fn2();
/*
调用:
函数名() 直接调用函数(非事件调用)
el.onclick = 函数名; 事件调用
*/
/*
el.onclick = function(){} //匿名函数
*/
函数传参
function fn(a,b){
console.log(a,b);
}
fn(1,2);
function fn(){
var nub = "";
for(var i = 0; i < arguments.length; i++){
nub += arguments[i];
}
console.log(nub);
}
fn("a","b","c","b");
function fn(){
var a = 10;
return a;
}
var b = fn();
console.log(b);
function fn(){
var a = 10;
return function(){
return a;
};
}
var b = fn()();
console.log(b);
function fn(){
return 10;
alert(1);
}
fn();
函数的调用
function fn(){
var a = 0;
a++;
console.log(a);
}
fn();
fn();
fn();
获取计算后样式
function $id(id){
return document.getElementById(id);
}
var box = $id("box");
console.log(getComputedStyle(box)["backgroundColor"]);
function $id(id){
return document.getElementById(id);
}
var box = $id("box");
function getStyle(el,attr){
return getComputedStyle(el)[attr];
}
console.log(getStyle(box,"width"));
js预解析
var a;
/*
js预解析
var js 正常解析之前,会先快速把 script(或者function) 中的 var 声明,及声明的名字,提升到代码块(作用域)的最前边
function 正常解析之前,会先快速把 script(或者function) 中的 function 及内容,提升到代码块(作用域)的最前边,跟在 var 声明之后.
预解析之后,js 再会从上到下 一行一行去执行
*/
alert(a);
a = 0;
function a() {
alert(1);
}
/*
被预解析之后的样式:
var a;
var a;
function a () {var b = 1;}
console.log(a);
a = 10;
console.log(a);
console.log(a);
a = function(){var b = 2;}
console.log(a);
*/
console.log(a);
var a = 10;
console.log(a);
function a () {var b = 1;}
console.log(a);
var a = function(){var b = 2;}
console.log(a);
作用域
局部作用域
function fn(b){
var a = 0;
console.log(a);
a = 10;
console.log(a);
}
function fn2(){
alert(a);
}
fn();
fn2();
全局作用域
var a = 0;
function fn(){
a = 10;
}
function fn2(){
console.log(a);
}
fn();
fn2();
function fn(){
a = 10;
}
function fn2(){
console.log(a);
}
fn();
fn2();
window
a = 10;
console.log(window.a);
/*
在 js 中,在调用 window 的属性时,window 可以省略不写
代码中任何地方都能访问到的拥有全局作用域,有以下情况:
1. 声明在任何函数之外,那这条数据,就可以在全局的任意地方使用,它的作用范围时全局的,所以叫全局作用域,这条数据我们也叫全局变量
2. 不使用var声明直接赋值的变量拥有全局作用域
3. 所有 window 对象的属性拥有全局作用域
*/