# 三句話 #
- alert(“內容”);
效果:在頁面中彈出一個提示框,提示信息從alert後面的引號中的文本來的。
注意:如果頁面上出現彈出框以後,頁面的位置不能改變,並且不能關閉。
- console.log(“內容”);
向瀏覽器的控制檯輸出一句話。
作用:用來進行代碼調試。
- prompt(“內容”);
彈出一個輸入框,給用戶提供輸入信息的位置。
# 數據類型 #
- 字符串:String
特點:用引號引起來的文本的串。
注意:
1) 這個引號既可以是單引號,也可以是雙引號。
2) 如果要在字符串輸出引號應該怎麼辦
a. 如果字符串有雙引號,可以將字符串的引號改變爲單引號
b. 可以使用轉譯符。
常用的轉譯符:
\' 單引號
\" 雙引號
\n 換行
\t 縮進
\b 空格
\r 回車
\\ 斜槓
- 數值類型:Number
整數,小數。
特點:表達的是一種數據的量
加號的作用:
1) 兩個字符串用加號連接,那麼將來加號起到的作用是連接這兩個字符串。
2) 兩個數值用加號連接,那麼將來加號起到的作用是加法運算符的作用。
3) 加號連接的兩個直接量中有一個是字符串,那麼加號的作用是連接。
- 判斷數據的類型:
typeof: 判斷數據類型
用法:
typeof(直接量)
console.log(typeof("abd")); //string
console.log(typeof(123)); //number
typeof 直接量
console.log(typeof "abd"); //string
console.log(typeof 123); number
- Math對象
Math.pow(2,53) 2的53次冪
Math.round(.6) => 1.0 四捨五入
Math.ceil(.6) => 1.0 向上求整
Math.floor(.6) => 0.0 向下求整
Math.abs(-5)
Math.max(x,y,z)
Math.min(x,y,z)
Math.random() 生成一個大於等於0小於1.0的僞隨機數
Math.PI
Math.E
Math.sqrt(3)
Math.pow(3,1/3)
Math.sin(0)
Math.log(10) 10的自然對數
Math.log(100)/Math.LN10 以10爲底100的對數
Math.log(512)/Math.LN2 以2爲底512的對數
Math.exp(3) e的3次冪
- 數據類型轉換
強制轉換:
var a = "123";
var b = Number(a) + 1;
console.log(b); //124
console.log(typeof b); //number
var c = parseInt(a);
console.log(c); //number
var a = "abc";
var b = Number(a);
console.log(b); //NaN
console.log(typeof b); //number
number
1. 如果是數字值,返回本身
2. 如果字符中包含有效的浮點格式,將其轉換爲浮點數值
3. 如果是空字符串,將其轉換成0
4. 如果字符串中包含非以上格式,則將其轉換成爲NaN
parseInt
1. 忽略字符串前面的空格,直至找到第一個非空字符
2. 如果第一個字符不是數字符號或者負號,返回NaN
3. 如果第一個字符是數字,則繼續解析直至字符串解析完畢或者遇到一個非數字符號爲止
4. 如果是小數,會轉成整數(向下取整)
parseFloat
與 parseInt 一樣,唯一區別是可以保留小數。
注意:
parseInt 可以傳遞兩個參數,第一個參數是要轉換的字符串,第二個參數是要轉換的進制
例: var num1 = parseInt(“A”,16); //A按16進制解析是10
轉字符串
- .toString()
var a = 123;
a = a.toString();
- String()
var a = 123;
a = Srting(a);
第一個方法是直接調用這個變量對象中的方法,第二個就是直接使用強制轉換的方法。
- boolean轉換
var a = "true";
a = Boolean(a);
注意:
false “”(空字符串) 0 NaN undefined null 會轉換成false,其餘轉換成true
- 隱式轉換
- 隱式轉換成Number:
直接在要轉換的內容前加上”+” “-” “*” “/” “%”;
- 隱式轉換成Number:
var a = "123"; ===> a =+a;
var a = "123"; ===> var b = a * 2; ===> 246;
- 隱式轉換成字符串:
var a = 123; ===> a = a + "";
3.隱式轉換成boolean:
var a = 123; ===> a = !!a;
- script標籤屬性
type
type=”txt/javascript”
可以省略
async
async=”async”
值可以省略,立即異步下載外部js,不影響頁面其它的操作,js下載完畢立即執行
defer
defer=”defer”
值可以省略,腳本延遲到文檔完全被解析和顯示後再執行,只有外部腳本可以使用 - 數值
最小值:Number.MIN_VALUE 5e-324
最大值:Number.MAX_VALUE 1.7976931348623157e+308
無窮大:Infinity
無窮小:-Infinity 數值檢測
NaN 非數值 (Not a Number)
– console.log(“abc”/18); //結果是NaN
– NaN 與任何值都不相等,包括NaN本身
isNaN(): 任何不能被轉換爲數值的值都會導致這個函數返回 true
– isNaN(NaN); //true
– isNaN(“blue”); //true
– isNaN(123); //false邏輯運算符
&&
如果第一個操作數爲假,返回第一個操作數,第二個操作數不執行
如果第一個操作數爲真,則返回第二個操作數
||
如果第一個操作數爲假,返回第二個操作數
如果第一個操作數爲真,返回第一個操作數,第二個操作數不執行 (常用)
沒有重載
重載:函數的名字相同,但是參數個數不同
JavaScript中沒有重載的概念,下面的相同名稱的函數會把上面的函數覆蓋,所以不允許出現同名的函數(大多數情況下)
函數的兩種定義方式
1.函數聲明
function f(a,b) {
return a + b;
}
console.log(f(5,6));
2.函數表達式
//myFun和f等價
var myFun = function (a,b) {
return a + b;
}
console.log(myFun(6,7));
變量的作用域
不使用var聲明的變量是全局變量,不推薦使用
變量作用域只有兩種,全局變量和函數內的變量
js中沒有塊級作用域
在其他語言中,在代碼塊中定義的變量,外部是訪問不到的,比如在for循環中定義的變量。
但是在js中沒有塊級作用域
典型題目1
var num = 10;
fun();
function fun() {
console.log(num);
var num = 20;
}
輸出結果:undefined
js是解釋型語言,由解析器執行
解析器解析過程,
預解析:
先找var,function和參數(函數參數)
找到var和function之後,會把var和function函數提前(var僅提前聲明,不提前賦值)
從上到下一行一行執行代碼
var num; //全局預解析
function fun() {
var num; //局部預解析
console.log(num);
num = 20;
}
num = 10;
fun();
典型題目2
var a = 8;
f1();
function f1() {
var b = 9;
console.log(a);
console.log(b);
var a = '123';
}
輸出結果:undefined 9
預解析後:
//全局預解析時只把函數提前,在函數要被調用前纔對函數內部進行局部預解析
var a;
function f1() {
var b;
var a;
b = 9;
console.log(a);
console.log(b);
a = '123';
}
a = 8;
f1();
典型題目3
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
輸出結果:9 9 9 9 9 報錯
預解析後:
function f1() {
var a; //a是局部變量
a = b = c = 9; //b和c是全局變量
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
命名函數
匿名函數
沒有命名的函數
一般用在綁定事件的時候
function () {}
自調用函數
只能執行一次
(function () {
console.log("test");
})();