當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS语法(二)
JS變量
- var 變量名 = 變量值;//自己會判斷什么類型
- 一個(gè)好的編程習(xí)慣是,在代碼開始處,統(tǒng)一對需要的變量進(jìn)行聲明。
- var name =?“xiaosan”, age = 22, address =?“owrhohfw”;?
- var a = 10; ?
- var b; ? //?當(dāng)一個(gè)變量沒有被賦值的時(shí)候,是undefined
- 重新聲明JS變量,改變量的值不會丟失
- var name = “Siri”;
- var name; ? // 依然是Siri
- JS變量生命周期
- 局部變量在函數(shù)運(yùn)行以后被刪除。
- 全局變量在頁面關(guān)閉后被刪除。
- 如果把值賦給未聲明的變量,該變量將被自動作為全局變量聲明,即使在函數(shù)內(nèi)執(zhí)行。
- carName = “Volvo”;
?
數(shù)據(jù)類型
- 不能寫數(shù)據(jù)類型,只能用var,也可以省去var 直接寫
- number:所有數(shù)字,比如小數(shù)\整數(shù),JS數(shù)字均為64位
- object:對象類型
- string:字符串類型,用雙引號“aaa”或者單引號‘ aaa’, 建議單引號 ?參考手冊:http://www.w3school.com.cn/jsref/jsref_obj_string.asp
- function:函數(shù)類型 ? ??var msg = '我是 '
- boolean : true / false
- var age = 20;
var name = 'xiaosan';
height = 1.88;
var msg = '我是' + name + ',' + age + '歲,身高是' + height;
?
JS運(yùn)算符
- 算數(shù)運(yùn)算符
- +?
- -
- *
- /
- %
- ++
- --
- 賦值運(yùn)算符 ?x = 10; ?y = 5;
- =
- +=
- -=
- *=
- /=
- %=
- x%=y ? ? ?x = 0
- 用于字符串的 + 運(yùn)算符
- + 運(yùn)算符用于把文本值或字符串變量加起來(連接起來)。
- 想在兩個(gè)字符串之間增加空格,需要把空格插入一個(gè)字符串之中:
- 或者把空格插入表達(dá)式中:
- tex3 = tex1 + ”? “ +text2;
- 如果把數(shù)字與字符串相加,結(jié)果將成為字符串。
- 比較運(yùn)算符 ? 給 x = 5
- == ? ? ?等于 ?
- x == 8 ?為false ? ? ? ? ? ? ? ? ? ? ??
- === ? ?全等(值和類型)
- x === 5 為true;x === “5”為false
- !=
- >
- <
- >=
- <=
- == ? ? ?等于 ?
- 邏輯運(yùn)算符
- &&
- ||
- !
- 條件運(yùn)算符
- ?
- 其他數(shù)據(jù)類型和字符串相加,會變成一個(gè)新的字符串
- var str1 = 10+10+'10'; ? //2010
var str2 = '10'+10+10; ? //101010
var str3 = '10'+(10+10); ? //1020
?
數(shù)組
- 數(shù)組中可以放任意類型的數(shù)據(jù)
- 寫法一:
- var cars = new Array();
- cars[0] = "Audi";
cars[1] = "BMW";
- 寫法二:
- var newArr = [10, -5, age, name, result, score, ['哈哈哈', 'dewdew']];
- 寫法三:
- var names = new Array("jack", "rose", "dd");
- 輸出數(shù)組中的內(nèi)容,遍歷有兩種方式
- for
- for in
- 刪除最后一個(gè)元素,添加一個(gè)新的元素到數(shù)組中 pop()和push()
- newArr.pop(); //刪除數(shù)組中最后的元素
- newArr.push([‘添加一個(gè)新的元素']);
apply()
- 語法:fun.apply(thisArg, [argsArray]) ?
- ?參數(shù)一:thisArg
- 在 fun 函數(shù)運(yùn)行時(shí)指定的 this 值。
- 如果這個(gè)函數(shù)處于非嚴(yán)格模式下,則指定為 null 或 undefined 時(shí)會自動指向全局對象(瀏覽器中就是window對象),
- ?同時(shí)值為原始值(數(shù)字,字符串,布爾值)的 this 會指向該原始值的自動包裝對象。
- 參數(shù)二:argsArray
- ?一個(gè)數(shù)組或者類數(shù)組對象,其中的數(shù)組元素將作為單獨(dú)的參數(shù)傳給 fun 函數(shù)。
- 參數(shù)限制在個(gè)數(shù)65536
- var newNumbers = [10,99,-21,3];
// 取出最小值
var minNumber1 = Math.min(10,32,34,4554,-9); ?// Math.min([10, 20,1]) 這樣不行,min不能接收數(shù)組
var minNumber = Math.min.apply(null,?[10,99,-21,3]); // apply 可以接收
// 取出最大值
var maxNumber = Math.max.apply(null, newNumbers);
- ?參數(shù)一:thisArg
?
Undefined和Null
- Undefined這個(gè)值標(biāo)示變量不含有值。可以通過將變量的值設(shè)置為 null 來清空變量。
- cars = null;
?
定義函數(shù)? ?
- 注意:兩個(gè)相同的變量或者函數(shù)名,后面的會覆蓋前面的。JS不存在重載
- function 函數(shù)名(參數(shù)..) { //參數(shù)只能寫var 所以可以省去var,直接寫參數(shù)名
??? //函數(shù)體
}
?
- function login(username, pwd) {
??? console.log(username);
??? console.log(pwd);
??? return 110; //返回值可以直接寫
}
//直接調(diào)用
login(xiaosan,123456);
?
- function sum(sum1, sum2, sum3) {
??? return sum1+sum2+sum3;
}
console.log(sum(10, 20)); ? //number+undefined 結(jié)果為NaN==Not a Number
??
- // 萬能加法?
function sum1(numbers){
??? var count = 0;
??? for(var i=0; i<numbers.length; i++){
??????? count += numbers[i];
??? }
??? return count;
}
var numbers = [12,23,'10'];
var result1 = sum1(numbers);
console.log('result1---->',result1); - result1----> 3510 ?// 字符
?
- 匿名函數(shù)
- var test = function (){
??? console.log('我是匿名函數(shù)');
}
// 如何調(diào)用匿名函數(shù)
test();
- var test = function (){
?
- 構(gòu)造函數(shù)
- // 構(gòu)造函數(shù)方式一
function Dog(){
??? this.name = null;
??? this.age = null;
??? this.friends = [];
??? this.eat = function(someWhere){
??????? console.log(this.name + '跑' + someWhere);
??? }
}
// 批量產(chǎn)生狗
var dog1 = new Dog();
// 賦值
dog1.name = 'laoda';
dog1.age = 19;
dog1.friends = ['laoer', 'laosan'];
dog1.eat('骨頭');
- // 構(gòu)造函數(shù)方式一
?
- // 構(gòu)造函數(shù)方式二
function Dog(name, age, friends){
??? this.name = name;
??? this.age = age;
??? this.friends = friends;
??? this.eat = function(someThing){
??????? console.log(this.name + '吃' + someThing);
??? }
}
// 創(chuàng)建新的對象
var dog2 = new Dog('laoda', 1, ['laoer']);
console.log(dog2);
??
內(nèi)置對象 arguments
- arguments 是 JavaScript 里的一個(gè)內(nèi)置對象,所有函數(shù)都有自己的一個(gè)arguments對象,它包含了函數(shù)調(diào)用的所有參數(shù),它是一個(gè)object類型。
- 我們可以用調(diào)用數(shù)據(jù)的方法來調(diào)用arguments。比如length,還有index方法。但是數(shù) 組的push和pop對象是不適用的。
- 將 arguments 轉(zhuǎn)為數(shù)組
- var args = Array.prototype.slice.call(arguments);
- function sum2(){
??? var count = 0;
??? for(var i=0; i<arguments.length; i++){
??????? count += arguments[i];
??? }
??? return count;
}
var result2 = sum2(10,20,40,30);
console.log('result2--->', result2); - result2---> 100 ?// number
- function sum( ) {
??? for (var i = 0, count = arguments.length; i < count; i++) {
??????? var tmp = arguments[i];
??????? if (typeof tmp == 'number') { ? //判斷是否為number類型
??????????? num += arguments[i];
??????? }
??? }
??? return num;
}
console.log(sum('10', 10, 20, 'xiaosan'));? //結(jié)果為30 - 而對于string類型的數(shù)字,最快的變?yōu)閚umber類型的方式是乘以1? ‘10’* 1;
- 也可以掉函數(shù)? parseFloat('10'); ? // number類型的 10
- 可以對JS語句進(jìn)行標(biāo)記
- cable : 語句
- cars=["BMW","Volvo","Saab","Ford"];
list:
{
??? document.write(cars[0] + "<br>");
??? document.write(cars[1] + "<br>");
??? document.write(cars[2] + "<br>");
??? break list;
??? document.write(cars[3] + "<br>");
??? document.write(cars[4] + "<br>");
??? document.write(cars[5] + "<br>");
} - BMW
Volvo
Saab
?
typeof?
- 用于判斷變量的真實(shí)類型
- var address = 'hhhhhh';
var num = 22;
console.log(typeof address, typeof num); - string number
?
?
JS 語法的靈活性
- 邏輯或 ||?
- var name1 = '';
var name2 = 'name2';
var name3 = 'name3';
var newName = null;
// 判斷if(name1){
??? newName = name1;
}elseif(name2){
??? newName = name2;
}elseif(name3){
??? newName = name3;
}
console.log(newName); // name2
- var name1 = '';
?
- 新的做法
- newName = name1 || name2 || name3;
console.log(newName); // name2
- newName = name1 || name2 || name3;
- 邏輯與 &&?
- var age = 18;
if(age>18){
??? console.log(‘可以去網(wǎng)吧');
}
- var age = 18;
??
- 條件 && {
?? ...
?}
(age >18) && console.log(‘可以去網(wǎng)吧');
?
轉(zhuǎn)載于:https://www.cnblogs.com/10-19-92/p/5780800.html
總結(jié)
- 上一篇: 如何使用matplotlib绘制一个函数
- 下一篇: 谈一下JavaScript的语法