文檔註釋:開頭兩個*。寫在函數上方,在調用函數時,
能夠看到文檔中的描述信息;
function aaa(){
}
【函數的聲明及調用】
一、函數的聲明格式:
function 函數名(參數1,參數2,..){
// 函數體代碼
return 返回值;
}
函數的調用:
① 直接調用:函數名(參數1的值,參數2的值,..);
② 事件調用:在HTML標籤中,使用事件名="函數名()"
<button onclick="saySth('hhh','red')">點擊按鈕,打印內容</button>
二、函數的注意事項:
① 函數名,必需要符合小駝峯法則!!(首字母小寫,以後每一個單詞首字母大寫)
② 函數名後面的()中,能夠有參數,也能夠沒有參數。分別稱爲有參函數和無參函數;
③ 聲明函數時的參數列表,稱爲形參列表,形式參數。(變量的名字)
function saySth(str,color){}
調用函數時的參數列表,稱爲實參列表,實際參數。(變量的賦值)
saySth("呵呵呵呵","blue");
④ 函數的形參列表個數,與實參列表個數,沒有實際關聯關係。
函數參數的個數,取決於實參列表。
若是實參列表的個數<形參列表,則未賦值的形參,將爲Undefined。
⑤ 函數能夠有返回值,使用return返回結果;
調用函數時,可使用一個變量接收函數的返回結果。
若是函數沒有返回值,則接收的結果爲undefined;
function func(){
return "haha";
}
var num = func(); // num = "haha";
⑥ 函數中變量的做用域:
在函數中,使用var聲明的變量,爲局部變量,只能在函數內部訪問;
不用var聲明的變量,爲全局變量,在函數外面也能訪問;
函數的形參列表,默認爲函數的局部變量,只能在函數內部使用。
>>>>JS中沒有塊級做用域的概念!!!只有函數做用域和全局做用域。
⑦ 函數的聲明與函數的調用,沒有前後之分。 即,能夠在聲明函數前,調用函數。
func();// 聲明func以前調用也是能夠的。
function func(){};html
[匿名函數的聲明使用]
一、聲明一個匿名函數,直接賦值給某一個事件;
window.onload=function(){}
二、使用匿名函數表達式。將匿名函數賦值給一個變量。
聲明:var func = function(){}
調用:func();
注意:使用匿名函數表達式時,函數的調用語句,必須
放在函數聲明語句以後!!!!(與普通函數區別!!!)
三、自執行函數:
① !function(){}(); // 可使用多種運算符開頭,但通常用!
!function(形參列表){}(實參列表);
② (function(){}()); // 使用()將函數及函數後的括號包裹
③ (function(){})(){}; // 使用()值包裹函數部分;
三種寫法的特色:
① 使用!開頭,結構清晰,不容易混亂,推薦使用;
② 可以代表匿名函數與調用的()爲一個總體,官方推薦使用;
③ 沒法代表函數與以後的()的總體性,不推薦使用;數組
[函數的內部屬性]
一、Auguments對象
① 做用:用於儲存調用函數時的全部實參。
當咱們調用函數並用實參賦值時,實際上參數列表
已經保存到arguments數組中,能夠在函數中,
使用argument[n]的形式調用。n從0開始。
② arguments數組的個數,取決於實參列表,與形參無關。
可是,一旦第N個位置的形參、實參、arguments都存在時,
形參將與arguments綁定,同步變化。(即在函數中修改形參的值,
arguments也會改變,反之亦成立。)
③ arguments.callee 是arguments的重要屬性。表示
arguments所在函數的引用地址:
在函數裏面,可使用arguments.callee()調用函數自己。
在函數內部,調用函數自身的寫法,叫作遞歸。
遞歸分爲兩部分:遞和歸。以遞歸調用語句爲界限,能夠將函數分爲
上下兩部分。
遞:當函數執行上半部分,遇到自身的調用語句時,繼續進入內層函數,
再執行上半部分。直到執行完最內層函數。
歸:當最內層函數執行完之後,再從最內層函數開始,逐漸執行
函數的下半部分。
當最外層函數執行時,遇到自身的調用語句,會進入內層函數執行,
而外層函數的後半部分暫不執行,直到最內層函數執行完之後,再逐步向外執行。瀏覽器
[JS代碼的執行順序問題]
JS代碼在運行時,會分爲兩大部分,檢查裝載和執行階段
檢查裝載階段:會先檢測代碼的語法錯誤,進行變量、函數的聲明;
執行階段:變量的賦值、函數的調用等,都屬於執行階段。
如下列代碼爲例:
consoloe.log(num); // Undefined
var num = 10;
func1(); // 函數能夠正常執行
function func1(){}
func2(); // 函數不能執行,打印func2時顯示Undefined;
var func2 = function(){}
緣由:上述代碼的執行順序爲:
------------檢查裝載階段-------------
var num;
function func1(){}
var func2;
-------------執行階段---------------
consoloe.log(num);
num = 10;
func1();
func2();
func2 = function;服務器
Screen對象
console.log(screen.width); // 屏幕寬度
console.log(screen.height); // 屏幕高度
console.log(screen.availWidth); // 可用寬度
console.log(screen.availHeight); // 可用高度=屏幕高度-底部工具欄
location對象
取到瀏覽器的URL地址信息;
完整的URL路徑;
協議名://主機名(IP地址):端口號/文件所在路徑?傳遞參數
(name1=value1&&name2=value2)#錨點
例如:
http://127.0.0.1:8080/wenjianjia/index.html?name=jredu#top
console.log(location.href); // 返回當前完整路徑
console.log(location.protocol); // 返回協議名
console.log(location.host); // 返回主機名+端口號
console.log(location.hostname); // 返回主機名
console.log(location.port); // 返回端口號
console.log(location.pathname); // 返回文件路徑
console.log(location.search); // 返回?開頭的參數列表
console.log(location.hash); // 返回#開頭的錨點*/
// 使用JS跳轉頁面
window.location = "http://www.baidu.com";*/
其餘使用location提供的方法跳轉頁面的方式
location.assign("http://www.baidu.com");
location.replace("http://www.baidu.com");*/
function assign(){
// 加載新的文檔,加載之後,能夠回退。
location.assign("http://www.baidu.com");
}
function replace(){
// 使用新文檔替換當前文檔。替換之後,不能回退。
location.replace("http://www.baidu.com");
}
function reload(){
從新加載當前文檔。刷新頁面
reload():在本地刷新當前頁面,至關於F5
reload(true);強制刷新,從服務器端從新加載頁面,至關於Ctrl+F5
location.reload();
}
history 瀏覽歷史
console.log(history);
console.log(history.length); // 瀏覽歷史列表的個數
function back(){
history.back(); // 後退按鈕
}
function forward(){
history.forward(); // 前進按鈕
}
function go(){*/
跳轉到瀏覽歷史的任意一個頁面;
0表示當前頁面,-1表示後一個頁面(back),1表示前一個頁面(forward)
history.go(1);
}
navigator 瞭解便可
包含瀏覽器的各類系統信息。
//console.log(navigator);
檢測瀏覽器安裝的各類插件。
//console.log(navigator.plugins);
// 判斷有沒有插件
if(navigator.plugins[2].name == "Native Client"){
alert("有");
}else{
alert("沒有");
}
// 尋找全部插件
for(var i=0; i<navigator.plugins.length;i++
alert(navigator.plugins[i].name);
}
Window對象的經常使用方法:
>>> 在window對象中的全部方法和屬性,都可以省略window關鍵字。
window.alert(); --> alert(); √
一、alert():彈出一個警告提示框;
二、prompt():彈窗接收用戶的輸入;
三、confirm():彈出一個帶有"肯定""取消"按鈕的對話框,點擊
按鈕返回true或false。
四、close():關閉當前瀏覽器窗口。在個別瀏覽器中,只能關閉在
當前腳本新打開的頁面(使用超連接、window.open()等方式打開的頁面)
五、open():打開一個新窗口。
參數一:新窗口的地址;
參數二:新窗口的名字,並無卵用;
參數三:新窗口的各類屬性設置,"屬性1=值1,屬性2=值2,屬性3=值3"
六、setTimeout:設置延時執行,只會執行一次;
setIntervar:設置定時器,每隔n毫秒執行一次。
接收兩個參數,須要執行的function、毫秒數;
七、clearTimeout:清除延時器;
clearIntervar:清除定時器;
使用方法:設置延時器或定時器時,可使用變量接收定時器ID;
var id = setInterval;
調用clearInterval時,將id傳入,便可清除對應的定時器;
clearInterval(id)函數