what:基於對象,事件驅動的弱類型腳本語言
弱類型: 在定義變量之前。不需要定義數據類型
從哪裏引入:一般都是在body結束之前
2、三種引入的方式:
1、內部
2、外部
3、html時間觸發
<script>
alert("這是內部引入方式");
</script>
<script src="2.js"> </script>
<input type="button" value="登陸" onClick="alert('這是html事件觸發')" />
3、js數據類型:
undefined:未定義類型
null:空
boolean:布爾
String:字符串
Number:數字類型
4、變量的定義
var 變量名(命名規則與java一致)
查看一個變量的數據類型方法
typeof(變量名)然後調用彈出(alert即可查看)
5、js組成部分
1、ECMAScript:核心語法
2、DOM:Document Object Model 文檔對象模型
3、BOM:Browser Object Model 瀏覽器對象模型
6、html文檔解析順序是從上到下
7、js中不存在重載;後面的函數會覆蓋前面的函數
因爲js在加載代碼的時候先加載函數,相同名字的後面的覆蓋前面的
當調用一個函數給的參數多餘或者等於函數的參數,
那麼這個函數會取自己需要的參數並返回結果
如果小於函數所需的參數,則會輸出NaN(不是數字的數字類型)
//函數的定義
function add(x,y){
return x+y;
}
document.write(add(3,4)+"<br />") //NaN
function add(x,y,z){
return x+y+z;
}
document.write(add(3,4)+"<br />") //NaN
//匿名函數
add=function(x,y){
return x+y;
}
document.write(add+"<br />") //function(x,y){return x+y;}
//函數的自調用
add1=function(x,y){
return x+y
}(3,4);
document.write(add1+"<br />") //7
8、在js中,對於一個變量如果只是重複定義,沒有賦值。(那麼就相當於沒有重定義
)
例如:
for(var i=0;i<10;i++){
document.write(i+"<br />")
}
var i;
document.write(i+"<br />") //結果爲10;
9、類型轉換的方式
1、隱式轉換
+ 變成字符串
— * / % 變成數字
++ -- 變成數組
>< 數字的比較,字符串的比較
! 取反 把右邊的數字變爲布爾型
(當var a=!x;當x不等於0或者“”的時候,a爲false)
var d=1;
document.write(Boolean(d)); //true
2、強制轉換
1)var a="adc123"
document.write(parseInt(a)+"<br />"); //NaN
document.write(typeof(parseInt(a))+"<br />") //Number
2)var a="123abc"
document.write(parseInt(a)+"<br />"); //123
document.write(typeof(parseInt(a))+"<br />") //Number
解釋:對於a的解釋是從前面開始的,第一個解釋到a就報錯
10、嚴格模式 關鍵字是 "user strict" ;
11.練習:空心實心菱形的輸出
<script>
function b(n){
half=(n-1)/2;
for(var i=-half;i<=half;i++){
for(var j=1;j<=n;j++){
document.write(j>Math.abs(i)&&j+Math.abs(i)<=7?"*":" ");
}
document.write("<br/>");
}
}
b(7);
</script>
<script>function a(n){
half=(n-1)/2;
for(var i=-half;i<=half;i++){
for(var j=1;j<=n;j++){
document.write((j+Math.abs(i))%n==0||(j-Math.abs(i))==1?"*":" ");
}
document.write("<br/>");
}
}
a(7);
</script>