1,解釋型語言 和編譯型語言
編譯型:
先講我們編寫的代碼,轉換成電腦能夠讀懂的位元組碼,然後將將這些位元組碼儲存起來,產生一個可執行檔,當下次需要的時候直接執行這個可執行檔(JAVA, c)
解釋型:
先講我們編寫的代碼,轉換成電腦能夠讀懂的位元組碼,然後並不是儲存起來產生可執行檔,而是直接執行(php,javascript)
2,javascript的變數範圍
全域範圍:javascript可執行檔所有範圍都起作用
局部範圍:當前函數內起作用
舉個例子:
如果函數內部定義了和函數外部相同的變數,函數內部操作的是局部範圍的變數,函數外部操作的全域範圍的變數
varv = 'global';
functionf1(){
varv = 'function';
alert(v);
}
f1();
② var v = 'global';
functionf1(){
alert(v);
varv = 'function';
}
f1();
為什麼是undefined?
Javascript代碼執行流程:
Javascript代碼整體上是按照html文檔流執行,但是也並不是完全按照,而是優先執行函數,這時函數內部的局部變數暫時設定為undefined
3③
varv = 1;
functionf1(){
v+= 1;
alert(v);
}
f1();
f1();
Javascript的資料類型:(8大資料類型)
基礎資料型別 (Elementary Data Type)(未經處理資料類型)
Undefined
聲明了但是未初始化(第一次賦值)
函數沒有傳回值
Null
未找到的(未定義的對象),一個對象
Boolean
True,false
Number
整數和小數都是數實值型別
String
Javascript是基於對象的語言,因為他沒有類的概念
所有的資料都是對象,
人----對象 俄羅斯人 ,美國人中國人是類型
varstr = 'hello world';
varstr2 = 'nihao';
//alert(str.length);
//alert(str.concat(str2));
alert(str.toUpperCase());//驗證碼不區分大小寫時候
alert(str.substr(2,3));//參數1,待截取的字元的索引,參數2,截取的長度
對象資料類型(引用資料類型)
1,數組
//獲得數組
vararr = ['xiaobai',123];
vararr2 = new Array('xiaohei',456);
//引用資料類型(引用的是同一個地址)
vararr3 = arr2;
arr2.push('hello');
//alert(arr3);
varstr = arr2.toString();
alert(typeof(str));
for ...in
//遍曆數組的元素
vararr = ['zhangsan','lisi','wangwu','zaholiu'];
vari;
for(iin arr){
alert(arr);
}
2,對象
獲得對象
(1)new Object()
(2)通過構造器(建構函式獲得對象)
//通過建構函式(構造器)獲得對象
function student(){
this.name="wanger";
}
var obj = new student();
alert(obj.name);
說明:構造器就是一個普通的函數,只是當我們通過new函數名()來調用的時候,獲得一個對象,這時候這個函數就稱之為建構函式,建構函式內部通常使用this來代表當前的對象
(3)json {}
varobj = new student();
alert(obj.name);
//通過json快捷文法來獲得
varobj2 = {'name':'zhangsan'};
alert(obj2.name);
Javascript 內建對象
作業:比較floor ceil round 區別
varnum = 0.123;
alert(Math.ceil(num)); //1
alert(Math.round(num));//1
alert(Math.floor(num));//0
隨機點名:
Date對象數字時鐘
函數對象
//函數是一個值,因為我們可以用一個變數來儲存,通過變數(函數名)來找到這個函數
varf1 = function(){
alert('hello');
}
f1();
alert(typeof(f1));
Alert()
Window.alert();
函數範圍鏈:
從最低級向上一級尋找的過程
函數的參數:
函數的參數在調用時和聲明時,參數個數可以不一致,因為在函數內部有一個專門管理函數參數的對象,這個對象可以獲得真實的參數
求函數參數的和
function f2(n1,n2,n3,n4){
alert(arguments[1]);
}
f2(1,2,4,5);
confirm
<p id="p1">刪除我吧</p>
<scripttype="text/javascript">
//alert(confirm('確認要刪除嗎'));
//獲得使用者點擊哪個按鈕(確認還是取消),確認返回true取消返回false
if(confirm('確認要刪除嗎')){
document.getElementById("p1").innerHTML='';
}
</script>
猜數字
alert(prompt('請輸入數字',2));
//隨機產生一個數字
//讓使用者輸入的數字和隨機產生的進行比較
//規定次數
varrandom = Math.random()*100;
varinput = prompt('請輸入數字',2);
if(input<random){
alert("你猜的數字太小了");
}elseif(input>random){
alert("你猜的數字太大了");
}elseif(input==random){
alert("恭喜你猜對了");
}
Eval() 函數會將函數的參數當作js的運算式來運行
例如eval(‘1+2’)結果是3
在input表單中,如果是text password這種輸入類型的文字框的話,size屬性規定使用者可以輸入的字元個數
如果是其他的屬性的表單的話,size表示所佔像素的大小
注意:
獲得標籤的內容用innerHTML
獲得表單的值 用value
計算機
核心代碼
/*
獲得使用者輸入的數字綁定onclick事件
開始運算
求結果
*/
varflag = true;
functiongetNum(num){
if(!flag){
document.getElementById('res').value= '';
flag= true;
}
document.getElementById('res').value+= num;
}
functiongetRes(){
varnum = document.getElementById('res').value;
num= eval(num);
document.getElementById('res').value= num;
flag= false;
}