1. 程式人生 > >JS基礎屬性跟運算

JS基礎屬性跟運算

eight 總結 text 條件判斷 例子 不容易 red 要求 次循環

小編這周學了JS函數基礎知識跟運算!!下面就迫不及待跟大家分享一下

【switch case的結構寫法】


結構寫法:(略)


2註意事項:
①switch結構()中的表達式。可以使用各種js支持的數據類型;
②switch結構 在進行判斷的時候,使用的===判斷;
③case後面的表達式可以是各種數據類型,但是值要求各不相同,否則也只會執行第一個case;
④break作用:執行完case代碼後,跳出當前switch結構:
缺少break的後果:從第一個正確的case項開始後,執行後面所有的case和default:原因⑤
switch結構在進行判斷的時候,只會判斷一次正確答案,當遇到正確的case之後,將不會再判斷後續的項目。


⑥:switch結構的執行效率要比多重if快,在多路分支結構中,推薦優先使用switch;

舉個列子:

var month =prompt("請輸入月份:");
switch(<--true--> parseFloat(month)){
//case num>=1&&num<=3:
case 1:
case 2:
case 3:
document.write("第一個季度");
break;
//case num>=4&&num<=6:
case 4:


case 5:
case 6:
document.write("第二個季度");
break;
//case num>=7&&num<=9:
case 7:
case 8:
case 9:
document.write("第三個季度");
break;
//case num>=10&&num<=12:
case 10:
case 11:
case 12:
document.write("第四個季度");
break;
default:
document.write("case不成立,執行default");

break;
}

switch跟case後面的條件寫法很多,這是小編自己總結的兩種方法!!!

var year = parseInt(prompt("請輸入一個數字:"));
var month = parseInt(prompt("請輸入一個數字:"));
var day = parseInt(prompt("請輸入一個數字:"));

1 首先聲明三個變量,年,月,日。我們首先要明確1,3,5,7,8,10,12月份是31天!4,6,9,11月份是30天!如果閏年2月份29天,否則28天


var days = 0;

聲明變量var days=0,使用switch結構
switch(month-1){

month-1即使減去當前月份!例如現在8月份,前面7個月過完了!!8月份並未完結!
case 11:
days += 30;
case 10:
days += 31;
case 9:
days += 30;
case 8:
days += 31;
case 7:
days += 31;
case 6:
days += 30;
case 5:
days += 31;
case 4:
days += 30;
case 3:
days += 31;
case 2:
if(year%4==0&&year%100!=0 || year%400==0)

判斷是否是閏年
days += 29;
else
days += 28;
case 1:
days += 31;
case 0:
days += 0;
}
days += day; // 將當前月份的天數,加上

alert(days);

這題要求隨便輸入一個日子 既可以求出這天是這一年的第幾天!包括閏年!

技術分享技術分享

技術分享

輸入年,月;日

技術分享

【循環結構的執行步驟】

1.聲明循環變量:
2.判斷循環條件
3.執行循環體操作
4.更新循環變量
然後.循環執行2-4,直到條件不成立時,跳出循環。

while循環()中額表達式,運算結果可以是各種類型,但是最終結果都會轉為真假,轉換規則同if結構
具體看if結構

例如:

var num=1; //1.聲明循環變量;
while (num<=10){//2 .判斷循環條件
document.write(+num+"<br>"); //3.執行循環體操作
num++;

while循環的栗子:

我們計算1--N的和

var num=parseFloat(prompt("請輸入一個數字:"));

手動輸入變量num!!
var i= 1;
var sum= 0;

聲明i跟sum變量!!!
while (i<=num){

()裏面聲明條件!可以看出跟if結構相似

sum += i;//1//3//6//10//15
i++;//2//3//4//5
}
document.write(sum);

打印結果

while 先判斷在執行


do-while:先執行在判斷,即使初始條件不成立,do-while也至少執行一次;

var num = 10;

聲明num的值等於10;

先執行一輪在進行判斷!!輸出10,然後進行num--!!
do{
document.write(num+"<br>");
num --;

執行完一輪後,進行判斷!符合條件繼續進行
}while(num>0);

繼續輸出num

document.write(num);

最簡單的的一個例子:最終結果就是10,9,8,7,6,5,4,3,2,1,0

do-while機構嵌套if,else結構

var COUNT =5;

聲明變量 var COUNT=5;
do{
var num = prompt("請輸入一個數字:");
if(num>COUNT){
alert("輸入過大");
}else if(num<COUNT){
alert("輸入過小");
}else{
alert("恭喜!猜對了!");
}
}while(num!=COUNT);

從題目可以看出本題求得是如果輸入數字=5將是輸入正確!將if結構嵌入do-while結構

while裏面的判斷條件是輸入的num!=5將會繼續,等於5會終止

[for 循環有三個表達式]

1 for三個表達式:1聲明循環變量 2 判斷循環條件 3 更新循環變量 三個表達式之間用;分割,for循環三個表達式都可以省略,但是兩個;缺一不可

2 for循環的兩個特點:先判斷,在執行,與while相同

3 for循環三個表達式都可以有多部分組成:第二部分多個判斷條件用&& || 鏈接,第1,3部分用逗號分隔;

for (var num = 1; num<=10; num++){
document.write(num+"<br>")

在()裏面聲明三個表達式!{}裏面直接輸出變量!

{循環控制語句}

1 break: 跳出本層循環,繼續執行循環後面的語句;
如果循環有多層嵌套,則break只能跳出一層。

2 continue:跳過本次循環剩余的代碼,繼續執行下一次循環;
①對於for循環。continue之後執行的語句,是循環變量更新的語句i++;
②對於while. do-while循環,continue之後執行的語句,是循環條件判斷!
因此,使用這兩個循環時;必須將continue放到i++之後使用,否則,continue將跳過i++導致死循環;

求 1--100的和

可以同時輸入2個變量!

我們可以看出(1+100)+(2+99).。。。(50+51)方法比較簡單


var sum = 0;

求和變量!先聲明一個var sum=0變量!
for (var i=1,j=100;i<j;i++,j--) {
sum += (i+j);

同時輸入兩個變量!i=1,j=100! 我們可以看出最後結果是50+51!所以i<j ;並且i從1開始++,j從100開始--進行求和

if(i<50) document.write("("+i+"+"+j+")+");
else document.write("("+i+"+"+j+")=");
}

document.write(sum);

技術分享

【循環嵌套的規律】

①:外層循環控制行數,內層循環控制每行的個數;
②:【圖形題做題的思路】
1確定圖形一共有幾行,行數即為外層循環的次數;
2確定每行中有幾種元素組成,有幾種元素即表示為有幾個內層循環,
3 確定每種元素的個數,個數即為每個內層循環的次數;
tips:如果每種元素的個數不固定,則找出每種個元素的個數,與行號的關系,這個關系表示式,即為內層循環
的最大值,(循環變量從1開始)

這個並不是很重要,主要用於開發思維,給大家簡單介紹一下就好!

for(var i=1;i<=5;i++){

for(var j=1;j<=5;j++){

document.write("*")
}
document.write("<br>");

}

5行5列的長方形!!

for(var k=1;k<=5;k++){

for(var l=1;l<=k;l++){

document.write("*")
}

document.write("<br>");
}

三角形

1.函數的聲明格式:


function 函數名(參數1,參數2,.......){
//函數體代碼
return 返回值;
}
函數的調用:
①:直接調用:函數名(參數1的值,參數2的值。。。。。。);
②:事件調用方式,在HTML標簽中,使用事件名字,等於函數名* <button onclick="saySb(‘hahaha‘,‘yellow‘)">點擊按鈕,打印內容</button>


2 函數的註意事項:
①:函數名必須要符合小駝峰法則!!(首字母小寫,之後每個單詞的首字母大寫)
②:函數名後面的()中可以有參數,也可以沒有參數,分別稱為有參函數和無參函數:
③:聲明函數時候的參數列表,稱為形參列表,形參函數(變量的名字)
function saySb(str,color)
調用函數時候的實數列表,稱為實參列表,實參列表(變量的賦值)
saySb("姜浩真醜!哈哈哈"," red");

④:函數的實參列表個數與形參列表個數沒有關系,
函數的參數個數,取決於實參列表;
如果參數列表的個數《形參列表,則未賦值的參數,將為Undefined;》*

⑤:函數可以有返回值,使用return返回結果;使用函數時;可以使用一個變量接受函數的返回結果,如果函數的沒有返回
值,則接受的結果為undefined:
function func(){
return "haha"
}
var num = func(); //num ="haha"
⑥:函數中函數的作用域:在函數中,使用var聲明的變量為局部變量,只能在函數內部訪問,
不用var聲明的變量為全局變量,在函數外面也能訪問
函數的形參列表默認為函數的局部變量,只能在函數內部使用;


⑦:函數的聲明跟函數的調用沒有先後之分 ,即,可以再聲明函數前,調用函數。
func(); //聲明func之前調用也是可以的;
function func(){}

栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子栗子

輸入三個數比較大小,熟悉函數

var a =prompt("輸入一個數");
var b =prompt("輸入一個數");
var c =prompt("輸入一個數");

根據上面的要求先輸入三個數
function num(str,str,str){

首先輸入function 函數名(參數1,參數2,.......參數沒有什麽麽特殊要求,用a,b,c也行)
if(a>b){
if(a>c){
maxNum=a;
}else{
maxNum=c;}
}else {
if(b>c){
maxNum=b;
}else{
maxNum=c;
}

裏面嵌套IF ELSE結構判斷大小!!

maxNum=a,亦可以換成return a;
}
return maxNum;
}



var i=num(a,b,c);
alert(i);

給num聲明一個變量,輸出開即可!

可以都用return輸出!!

var a =prompt("輸入一個數")
var b =prompt("輸入一個數")
var c =prompt("輸入一個數")
function num(str,str,str ){
if(a>b){
if(a>c){
return a;
}else{
return c;}
}else {
if(b>c){
return b;
}else{
return c;
}
}
}
num();
var i =num(a,b,c);

var a = prompt("請輸入用戶名:");
var b = prompt("請輸入用密碼:");
function num(a,b){
if(a=="jredu",b==1234){
return "true";
}else{
return "false";
}
}
num();
var i=num(a,b);
alert(i);

多層函數的嵌套:

栗子很多,簡單做一個我自己做的

這個題好玩在哪?不輸入符號,輸入兩個數,點擊符號進行輸出

var num1=parseFloat(prompt("請輸入第一個操作數:"));
var num2 = parseFloat(prompt("請輸入第二個操作數:"));
function num3(a,b){
alert(num1+num2);
}
function num4(c,d){
alert(num1-num2);
}
function num5(e,f){
alert(num1*num2);
}
function num6(g,h){

alert (num1/num2);
}

<body>

<button onclick="num3(num1,num2)">+</button>
<button onclick="num4(num1,num2)">-</button>
<button onclick="num5(num1,num2)">*</button>
<button onclick="num6(num1,num2)">/</button>
</body>

[匿名函數的聲明使用]


1.聲明一個匿名函數,直接賦值給某一個事件;
window.onload = function(){}
2.使用匿名函數表達式。
將匿名函數賦值給一個變量。
聲明:var func=function(){}
調用: func();

3:自執行函數:
① !function(){}();//可以使用多種運算符開頭,但一般用!
!function(形參列表){}(實參列表);
②(function(){}());//使用()將函數和函數後面的括號包裹* ③ (function(){})()使用()只包裹函數部分!!
三種寫法的特點
①:使用!開頭,結構清晰,不容易混亂,推薦使用:
②:能夠表明匿名函數與調用的()為一個整體。官方推薦使用!
③:無法表明函數與之後的()的整體性,不推薦使用


註意:使用匿名函數表達式時,函數的調用語句,必須放在聲明語句之後,!!!!!!(與普通函數的區別!!!)

集中寫法!

(function(num){
alert(num);
}("xxxx"));

!function(num){
alert(num);
}("歷經歸250");

[函數的內部屬性]


1 。Arguments對象
①:作用:用於儲存調用函數的所有實參,
》》》當我們調用函數,並用實參賦值時候。實際上參數列表已經保存到arguments數組中。,
可以再函數中。使用arguments[n]的形式調用。n從0開始
②:arguments數組的個數,取決於實參列表,與形參無關;
一旦第N個位置的形參,實參 arguments都存在時候,形參將於arguments綁定,同步變化,
(即在函數中,修改形參的值,arguments也會改變,反之,亦成立)
③:arguments.callee是arguments的重要指標,表示arguments所在的函數的引用地址
在函數裏面。亦可使用arguments.callee()調用函數本身;
在函數內部,調用函數自身的寫法,叫做遞歸
遞歸分為2部分,遞和歸 ,以遞歸調用的語句為界限,可以將函數分為2部分
遞:當函數執行上半部分調用自身的語句是,繼續投入內層函數,在執行上半部分,直到執行完最內層函數。
歸:當最內層函數執行完以後,再從最內層函數開始,逐漸執行函數的下半部分!

當最外層和那個函數執行時,遇到自身的調用語句,會進入內層執行,而外層函數的後半部分暫不執行,
直到最內層函數執行完以後,在逐步向外執行;

先聲明2個變量

var num = 1;
var sum = 0;

函數做法,輸入函數
function func1(){
sum += num;
num++;

求和,先執行上半部分!如果有遞沒有歸。可以看出沒有函數聲明,只能輸出1,
if(num<=10){
arguments.callee()
}
}

有了歸,才能正確輸出

聲明函數必不可少!
func1();
alert(sum);

求1!+2!。。。10!

var num=1;
var sum=0;
function func1(){
var i=1;
var jie = 1;
!function(){
jie *= i;
i++;
if(i<=num){
arguments.callee();
}
}();
sum += jie;
num++;
if(num<=10){
arguments.callee();

}
}
func1();
alert(sum);

函數嵌套!至於要將裏面的運算嵌套在第一個裏面即可!

JS基礎屬性跟運算