2019-12-09 從零開始的JS學(xué)習(xí) 二

轉(zhuǎn)換為布爾型

Boolean()函數(shù) 說明:其他類型轉(zhuǎn)成布爾值 實(shí)例:Boolean('true')
代表空,否定的值會(huì)被轉(zhuǎn)換為false,如'' 0 NaN null undefined
其余的值都會(huì)被轉(zhuǎn)換成true

運(yùn)算符

console.log(1 + 1);
console.log(1 - 1);
console.log(1 * 1);
console.log(1 / 1);

//%取余運(yùn)算
console.log(1 % 1);

//遞增(++)和遞減(--)
//前置遞增運(yùn)算符 先+1后返回值
var num = 1;
++num;//2 
++num + 1;//3
num++ + 1;//2 num為2

//前置自增和后置自增如果單獨(dú)用 效果是一樣的 否則不一樣

//比較運(yùn)算符
< 小于
> 大于
>= 大于等于
<= 小于等于
== 判斷號(hào)
!= 不等號(hào)
===  !==  全等 要求值和數(shù)據(jù)類型都一樣

//邏輯運(yùn)算符
&& 邏輯與
|| 邏輯或
! 邏輯非

//運(yùn)算符優(yōu)先級(jí)
一元運(yùn)算符里面的邏輯非優(yōu)先級(jí)很高
邏輯與比邏輯或優(yōu)先級(jí)高

流程控制-分支

if (條件表達(dá)式) {
//執(zhí)行語句
}
//
if () {
}else if () {
//執(zhí)行
}else if () {
//執(zhí)行
}else {
//總結(jié)語句
}

三元表達(dá)式

條件表達(dá)式? 表達(dá)式1:表達(dá)式2 //如果為真執(zhí)行表達(dá)式1為假執(zhí)行表達(dá)式2

分支流程控制語句

switch(表達(dá)式) {
case 條件1:
執(zhí)行;
break;
case 條件2:
執(zhí)行;
break;
default:
執(zhí)行;
}
//我們開發(fā) 表達(dá)式經(jīng)常寫成變量
//匹配的時(shí)候是 全等 必須值和類型都一致才會(huì)進(jìn)去
//break如果當(dāng)前的case里面米有break則不會(huì)退出switch 繼續(xù)執(zhí)行下一個(gè)case

switch 和if else if語句的區(qū)別

一般情況下可以相互替代
1,一般確定值的情況下用switch 區(qū)間范圍用if else if
2,switch執(zhí)行率更高直接跳到符合條件的選項(xiàng) if else if 每個(gè)都要判斷
3,分支多用switch 少用if

循環(huán)控制

//for 循環(huán)
for (let i = 0; i < 100; i++) {
                console.log(i);
}

//九九乘法表
var str = '';
for (var i = 1; i <= 9; i++) {
    for (var j = 1; j <= i; j++) {
        str += j + '*' + i + '=' + i*j + '  ';
        // console.log(str);
    }
str = str + '\n'
}
console.log(str);

//while循環(huán)
var i = 0;
while(i < 5) {
    console.log(i);
    i++;
}

//do while循環(huán)
var i = 0;
do {
    console.log(i);
    i++;
} while(i < 5)

continue關(guān)鍵字 跳出本次循環(huán) 進(jìn)入下一次循環(huán)
break關(guān)鍵字 結(jié)束所有循環(huán)

數(shù)組 可以存放任意的數(shù)據(jù)類型

//創(chuàng)建數(shù)組的兩種方式
//利用new創(chuàng)建數(shù)組
var arr = new Array();
//利用數(shù)組字面量創(chuàng)建數(shù)組
var arr = []

//訪問數(shù)組元素(索引)
arr[0]

//獲取長度
var array = ['1','2'];
console.log(array.length);

//求數(shù)組中的最大值
var array = [2,54,43,45,67,3,56,78];
var maxNum = array[0];
for (let index = 0; index < array.length; index++) {
    let num = array[index];
    if (num > maxNum) {
        maxNum = num
    }
}
console.log(maxNum);

//冒泡排序 雙重?cái)?shù)組
var array = [2,54,43,45,67,3,56,78];
for (let i = 0; i < array.length-1; i++) {
    for (let j = 0; j < array.length - i - 1; j++) {
        if (array[j] > array[j + 1]) {
            var temp = [];
            temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
        }
    } 
}
console.log(array);

函數(shù)

函數(shù)就是封裝了一段可以被重復(fù)執(zhí)行調(diào)用的代碼塊:大量代碼重復(fù)使用

//聲明函數(shù)
function log() {
    console.log('你好');
}
log();

//帶參數(shù)的函數(shù)
function log(value) {
    console.log(value);
}
log('你好測(cè)試');
log(1);

//js語法自由度相當(dāng)高 多參數(shù) 多傳參會(huì)忽略 少傳參沒傳的形參為undefined 計(jì)算結(jié)果就會(huì)使NaN

//帶會(huì)返回值的函數(shù)
func name() {
return 2;
}
var name = name();//name為2

//arguments對(duì)象的使用
        function fn() {
            console.log(arguments);
            
        }
        fn(1,2,3);
//偽數(shù)組 并不是真正意思上的數(shù)組
//具有數(shù)組的length屬性
//按照索引的方式進(jìn)行存儲(chǔ)的
//沒有真正數(shù)組的一些方法 pop() push()

return 有終止函數(shù)的作用
函數(shù)如果沒有return 則返回undefined

//定義函數(shù)的兩種方式
//利用函數(shù)關(guān)鍵字自定義函數(shù)
function fn() {
}

//函數(shù)表達(dá)式(匿名函數(shù))
var 變量名 = function(){
//代碼
};
var num = 10;//↑相似

作用域

就是代碼名字在某個(gè)范圍內(nèi)起的作用
變量的作用域: 根據(jù)作用域的不同 我們變量分為全局變量和局部變量
全局變量: 在全局作用域下的變量 在全局下都可以使用
局部變量: 在局部作用域下的變量 后者在函數(shù)內(nèi)部的變量就是局部變量
函數(shù)的形參也是局部變量
鏈?zhǔn)揭?guī)則(就近原則)

預(yù)解析

1,我們js引擎運(yùn)行js 分為兩步: 預(yù)解析 代碼執(zhí)行
2,預(yù)解析 js引擎會(huì)把js里所有的 var 還有function 提升到當(dāng)前作用域的最前面
3,代碼執(zhí)行 按照代碼書寫的順序從上往下執(zhí)行
4,預(yù)解析分為變量預(yù)解析(變量提升) 和函數(shù)預(yù)解析(函數(shù)提升)
變量提升:就是把所有變量聲明提升到當(dāng)前的作用域最前面
函數(shù)提升:就是把所有函數(shù)的聲明提升到當(dāng)前作用域最前面

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);
}
//作用域和預(yù)解析經(jīng)典案例 (9,9,9,9,9,報(bào)錯(cuò))

js對(duì)象

跟swift中的對(duì)象一個(gè)意思用來方便存儲(chǔ)一個(gè)事物的各種屬性

//利用對(duì)象字面量創(chuàng)建對(duì)象{}
var obj = {};//創(chuàng)建一個(gè)空的對(duì)象
var person = {
name: '張三' ,
age: 18 ,
sex : '男' ,
sayHi: function() {
//代碼
}
}
//里面的屬性或者方法我們采取鍵值對(duì)的形式 
//多個(gè)屬性或者方法中間用逗號(hào)隔開
//方法冒號(hào)跟的事一個(gè)匿名函數(shù)
//調(diào)用對(duì)象的屬性 我們采用點(diǎn)語法
person.name

//里面new Object 來創(chuàng)建對(duì)象
var obj = new Object();//創(chuàng)建一個(gè)空對(duì)象
obj.name = '張三';
obj.play = function() {
//執(zhí)行代碼
}

//利用構(gòu)造函數(shù)創(chuàng)建對(duì)象
//原因前面兩種方法一次只能創(chuàng)建一個(gè)對(duì)象
function 構(gòu)造函數(shù)名() {
this.屬性 = 值;
this.方法 = function() {
}
}
new 構(gòu)造函數(shù)名();//調(diào)用構(gòu)造函數(shù)

//構(gòu)造函數(shù)實(shí)例
//構(gòu)造函數(shù)
function Person(name,age,sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sing = function(action){
        console.log(action);
        
    }
}
let object = new person('張三','18','人妖');
console.log(object.age,object.name,object.sex);
object.sing('游泳');
//1構(gòu)造函數(shù)名字首字母大寫
//2我們構(gòu)造函數(shù)不需要return就可以返回結(jié)果
//3我們調(diào)用構(gòu)造函數(shù)必須要使用new

//遍歷對(duì)象
for (var key in object) {
    console.log(key);//屬性名稱
    console.log(object[key]);//屬性值
}

js內(nèi)置對(duì)象

js中的對(duì)象分為: 自定義對(duì)象,內(nèi)置對(duì)象,瀏覽器對(duì)象
內(nèi)置對(duì)象: js語言中自帶的一些對(duì)象,供開發(fā)者使用,提供了常用的必要功能(屬性和方法)
內(nèi)置對(duì)象優(yōu)點(diǎn): 幫助我們快速開發(fā)

//Math是一個(gè)內(nèi)置對(duì)象,它具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法
//數(shù)學(xué)對(duì)象,不是一個(gè)構(gòu)造函數(shù),所以我們不需要new來調(diào)用,而是直接使用里面的屬性和方法即可

//圓周率
console.log(Math.PI);

//最大值
console.log(Math.max(2,3,56));//56

//最小值
console.log(Math.min(2,3,56));//2

console.log(Math.min(2,3,'老師'));//NaN

console.log();//-Infinity 負(fù)無窮大

//利用對(duì)象封裝自己的數(shù)學(xué)對(duì)象
var mayMath = {
Pi: 3.14;
max: function() {
}
min: function() {
}
}

//絕對(duì)值方法
console.log(Math.abs(-1)); //1
console.log(Math.abs('-1')); //1  隱式轉(zhuǎn)換
console.log(Math.abs('字符串')); //NaN

//向下取整
console.log(Math.floor(1.2)); //1

//向上取整
console.log(Math.ceil(1.2)); //2

//四舍五入
console.log(Math.round(1.2)); //1

//隨機(jī)數(shù) 0-1之間
console.log(Math.random()); //[0,1)

//得到兩個(gè)數(shù)之間的隨機(jī)整數(shù) 并且包含這兩個(gè)整數(shù)
function getRandom(min,max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

console.log(getRandom(1,5));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子介衔,更是在濱河造成了極大的恐慌莲绰,老刑警劉巖炼团,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胸嘁,死亡現(xiàn)場(chǎng)離奇詭異指厌,居然都是意外死亡篮条,警方通過查閱死者的電腦和手機(jī)弟头,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涉茧,“玉大人赴恨,你說我怎么就攤上這事铸屉∩沼保” “怎么了是钥?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵阴幌,是天一觀的道長躬厌。 經(jīng)常有香客問我吭练,道長口渔,這世上最難降的妖魔是什么御铃? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任饺窿,我火速辦了婚禮歧焦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肚医。我一直安慰自己绢馍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布肠套。 她就那樣靜靜地躺著痕貌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糠排。 梳的紋絲不亂的頭發(fā)上舵稠,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼哺徊。 笑死室琢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的落追。 我是一名探鬼主播盈滴,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼轿钠!你這毒婦竟也來了巢钓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤疗垛,失蹤者是張志新(化名)和其女友劉穎症汹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贷腕,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡背镇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泽裳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞒斩。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涮总,靈堂內(nèi)的尸體忽然破棺而出胸囱,到底是詐尸還是另有隱情,我是刑警寧澤瀑梗,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布烹笔,位于F島的核電站,受9級(jí)特大地震影響夺克,放射性物質(zhì)發(fā)生泄漏箕宙。R本人自食惡果不足惜嚎朽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一铺纽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哟忍,春花似錦狡门、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至爆安,卻和暖如春叛复,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國打工褐奥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咖耘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓撬码,卻偏偏與公主長得像儿倒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呜笑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容