轉(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));