1.js引入網頁
1. 外部引入type 可以省略
2.直接內嵌到網頁裡面 分為上部內嵌和下部內嵌 下部內嵌可以提高網頁的效能
2.定義變數 var 變數名稱①變數在使用之前切記初始化3. 變數的資料型別(面試可能會詢問)②未初始化會報錯 undefined / a is not defined 未定義型別
③變數的命名規則:駝峰式
number string object(陣列,物件) boolean null undefined( function)
typeof 檢測變數的資料型別
var a=10;
var b="nihao";
var c=true;
var d={}; //物件
var e=; //陣列
var f=null; //空物件引用
var g=undefined;
console.log(typeof a);//number
console.log(typeof b);//string
console.log(typeof c);//boolean
console.log(typeof d);//object
console.log(typeof e);//object
console.log(typeof f);//object
console.log(typeof g);//undefined
console.log(typeof showname);//function
function showname(){}
4.值型別和引用型別
①值型別
空間不變,值的型別在不停地替換②引用型別
例如founction,objict({},[ ] , null) 對應引用空間,引用的位置是可以變化的
5.變數會被js 提前宣告(給變數乙個空間)
1.函式也會被提前宣告
2.帶返回值的函式
function showinfo()
var a = showinfo();
console.log(a); //a=1
3.帶參函式 ( 形參 實參)function showname(name, ***, age)
var name = showname("張三", "男", 18); //實參
console.log(name);
如果函式沒有引數列表 傳遞引數怎麼接收引數(***
)
argument 引數列表物件
function showdata()
showdata("小花", 18);
4.匿名函式
不帶函式名稱的函式 ---------不提前宣告
list(); not a function 報錯
var list = function ()
console.log(list(1, 2, 3));
5.自執行函式
其他函式呼叫後才會執行,自執行函式不用呼叫便會自己執行
執行函式自有形參,實參,有返回值(函式有的它都有)
// 有實參形參 返回值
var mm = (function (x, y) )(1, 2);
console.log(mm); //3
var temp = "object";
(function () )();
區域性變數:函式定義區
全域性變數 : 整個js
var a=10; //全域性變數
function f1()
function f2()
f1();
f2()
閉包的概念:
① 使用別人的區域性變數
②閉包會大量占用記憶體 ,會導致網頁記憶體洩露
③盡量避免使用閉包 會將閉包的值存在記憶體裡面
關於閉包的例題
①
function f1()
function f2()
f2(); //10
②
function f1()
return function ()
}var a1=f1(); // a1 = return function ()
a1();//1
t();
a1();//2
t();
a1();//3
③
function f1()
}console.log(f1()()); //999 第乙個括號執行f1函式,第二個括號執行f1返回的f2
console.log(f1()); // return function f2()
④
function f1()
}f1()(); //11
⑤
var name="global"; //全域性變數
function foo()
function fooouter1()
fooouter1(); //global
function fooouter2()
foo();
}fooouter2();*/
⑥
function test()
}value=3;
var a = test();
a(2);
//js裡面定義全域性變數 全域性方法 都是window屬性 瀏覽器最大物件
⑦
var m=0;
function f2(n)
temp();
//方法的重寫
//tostring object string tostring 重寫tostring 會自動執行string 類裡面的tostring
f2.tostring=function ()
/*console.log(typeof f2.tostring());*/
return f2;
}console.log(f2(1)); // 1 一次只能寫乙個,要是在寫m的值不為0,是已經執行過的m值
console.log(f2(1)(2)); // 3
console.log(f2(1)(2)(3)); // 6
JS函式與閉包
用簡潔的語法表達函式,箭頭函式不能使用arguments super new.target,沒有prototype屬性 函式名 引數 內部屬性和方法 函式名是乙個位址,指向函式。name屬性包含該函式的名稱 引數在內部表現為乙個陣列,所以呼叫時引數不受數量和種類的約束。沒有過載。可以在非箭頭函式內部...
js函式閉包
閉包的好處 希望乙個變數長期駐紮在記憶體當中 避免全域性變數的汙染 私有成員的存在 舉例 function f1 x var b f1 2 x 2 b 10 相當於b f2 b f2 故y 10 匿名函式 function 該方法經常在全域性作用域中被用在函式外部,從而限制向全域性作用域中新增過多的...
Js函式閉包
一 什麼是閉包 1.定義 如果在乙個內部函式裡,對在外部作用域 但不是全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包。2.如何建立閉包 常見方式 在乙個函式內部建立另乙個函式。例 function createcomparsionfunction propertyname else if ...