您好,登錄后才能下訂單哦!
一.JavaScript數據類型
JavaScript數據類型分為基本數據類型和引用數據類型:
1.基本數據類型:number,String,boolaen,null,undefined
1.1 number 包含小數和整數;String包含所有的字符串和字節;boolaen布爾型的值分為true和false(js中更多和Java相同,在python中布爾值為首字符大寫);null表示指向為空;undefined表示未定義,當變量只聲明未賦值或者函數無返回值時都為undefined。
2.引用數據類型:Array,object
2.1 Array表示數組,類似python中的list;object表示對象類型。所謂引用數據類型,是指其值是指向棧內存中某一存儲空間。
3.實例代碼
var a=10; //定義int整數
var b = 10.00; //定義小數
var c = 12.3; //定義小數
console.log('a:'+typeof(a)) //查看變量a的數據類型
console.log('b:'+typeof(b)) //查看變量b的數據類型
console.log('c:'+typeof(c)) //查看變量c的數據類型
var d ='abc'; //定義字符串
var e = b+d; //通過賦值語句定義字符串
console.log(e)
var f;
console.log(f) //undefined 1.只定義了,沒有賦值聲明;2.函數無返回值;
4.數組的常見操作
//產生數組的方式1(與Java不同的是,在js中定義數組時可以不指定長度;但是在Java中定義數組必須要指定長度,以便內存分配好指定長度的內存空間)
var array = new Array();
array[0]=12;
array[1]='you';
//產生數組的方式2
var array1 = [12,4,'what',[12,'ip'],'soga'];
var dic = {'name':'zhangsan','age':25,2:'you'};
var a2=[12,8,2,36,89,450,100,260]
console.log('array1='+array1);
console.log('dic = '+dic);
// Arrar,數組的相關操作
var array1 = new Array(3);
array1[0]=13;
array1[1]=34;
array1[2]=26;
array1[3]=17;
var array2=[12,34,56,78,89];
// concat()數組插入操作,且是將括號中整體插入到原數組的最后面
var array3 = array1.concat(array2)
console.log('array3='+array3);
for(var i=0;i<array3.length;i++){
console.log('array3['+i+']='+array3[i]);
}
//unshift()數組插入操作,且是將括號中整體插入到原數組的最前面
var array4 = array1.unshift([1,5,75])
array1.unshift(true,'no')
// document.write(array4);
console.log(array1)
console.log(array4,typeof(array4))
//shift()數組刪除操作,且刪除原數組的第一個元素
array1.shift()
console.log(array1)
// sort 排序操作,按最高位(例如:a = [8,123],則a.sort(),a=[123,8])的按從小到大排序
// reverse 排序操作,按最高位(例如:a = [8,123,34,10],則a.reverse(),a=[8,34,123,10])的按從小到大排序
array1.sort()
array2.reverse()
//自定義函數來按數組元素的數值大小正常排序
function sort(array1) {
/*自定義數組排序(正常排序)*/
temp1=array1[0];
for(var i=0;i<array1.length;i++){
// a=array1[i];
for(var j=i+1;j<array1.length;j++){
if(array1[i]>array1[j]){
temp1 =array1[i];
array1[i]=array1[j];
array1[j]=temp1;
}
}
}
return array1;
}
二.JavaScript基本語法
2.1定義變量--作用域、變量聲明周期
2.1.1 Js中定義變量需要使用關鍵字var,定義變量格式如下:
var 變量名 = 變量值;
2.1.2變量作用域:
1.局部變量:函數內部的使用var聲明的變量;
2.全局變量:函數內部沒有使用var聲明的變量和函數外面使用var聲明的變量;
例如:
var bb=123; #全局變量
function foo() {
cc='you'; #全局變量
var dd='what'; #局部變量
return bb;
}
2.1.3 函數生命周期
1.局部變量:從函數內部聲明到函數執行完成;
2.全局變量:聲明到這個頁面關閉;
2.2算數運算符
+(加) -(減) (乘) %(取余數或取模) /(除) ++(自加) --(自減)
注意:i++和++i的區別
2.3賦值運算符
= += -= = /= %=
2.4比較運算符
== === != !== > < >= <=
當不同數據類型的變量進行比較時,先將其轉換成對應的number類型,再進行比較。例如:
var a='2';
var b=2;
console.log(a==b);
console.log(a===b);
==:只比較數據大小;
===:既比較數據大小有比較數據類型;
比較運算符返回的是一個布爾類型
2.5邏輯運算符
&&(and) ||(or) !(not)
三.JavaScript基本語句--與Java完全相同
1.If
var a=2;
if (a>3){
alert('a>0');
}
else if (a>1){
alert('a>1');
}
else {
alert('a<0');
}
2.Switch
switch (a){
case 1:{
alert('周一');
break;
}
case 5:{
alert('周二');
break;
}
default:{
alert('周五')
}
}
3.For循環
//對數組操作,取出數組中的每個元素
var list = [1,56,'you','what','want',90]
//方法1:推薦使用
for(var i=0;i<list.length;i++){
document.write('list['+i+']='+list[i]+'<br>')
}
//方法2
for (i in list){
alert(list)
document.write('list['+i+']='+list[i]+'<br>')
}
4.While
var a =1;
while (a<3){
console.log('a='+a);
a++;
}
5.Do...while
var b =1;
do{
console.log('b='+b);
b++;
}while (b<3)
while是先判斷條件再執行,do...while...是先執行再判斷條件
6.Continue
Continue繼續本次循環的下一次循環
7.Break
Break跳出本次循環
6.7代碼塊如下:
<script>
for(var a =0;a<3;a++){
for(var b=0;b<5;b+=1){
if(a<b){
document.write('breack-=-=-='+'a='+a+',b='+b+';<br>');
break;
// continue;
}
document.write('a='+a+';b='+b+'<br>');
}
}
</script>
四.函數
1.函數相關
1.定義函數
1.1常用格式
function functionname() {function body}
function test1(name) {
alert('the name is :'+name);
return name+'\'s'
}
1.2不常用格式
function functionname(){'參數','參數2',...,'function body'}
var test2 = new Function("name","alert(\'the name is :\'+name);return name+'\\'s'");
var res= test1('張三');
var res2= test2('張三');
console.log(test1.length) //test1.length函數參數的個數
console.log(res);
console.log(res2);
function add(x,y,z) {
return x+y+z;
}
JS函數在調用時,函數的實參個數和形參個數不同時,JS不會報錯。實參和形參個數不等時,按實參的先后順序取值,多時后面多余的不取,少時只取前面的部分;
var res1 = add(2,7,1,9)
console.log(res1) //結果為10
var res2 = add(2,7)
console.log(res2) //結果為NAN
var res3 = add(12,'YOU') //有字符串結果即為String,少的參數則為undefined
console.log(res3) //結果為NAN
function f(x,y) {
return x+y;
}
var f =1;
var a= 2;
res = f(f,a); //報錯,因為函數調用為f(),只有f則是表示函數的地址,var f =1賦值操作將會把函數的內存地址覆蓋掉,此時f將不再是一個函數了。所以再進行調用時,將會報錯(f is a int ,not a function)
console.log(res)
1/函數的arguments屬性,表示傳給函數的實參數組
function add(x,y) {
console.log(arguments);
return x+y;
}
add(1,4,2)
2.需求:求任意數量實參的和的函數
function Add() {
var sum = 0;
for(var i=0;i<arguments.length;i++){
sum+=arguments[i];
}
return sum;
}
res = Add(1,8,23,'122');
console.log(res);
2.函數的作用域
1.局部作用域:函數內部的使用var聲明的變量;
2.全局作用域:函數內部沒有使用var聲明的變量和函數外面使用var聲明的變量;
例如:
var bb=123; #全局變量
function foo() {
cc='you'; #全局變量
var dd='what'; #局部變量
return bb;
}
3.函數的作用域遵守python的LEGB原則,即:變量名引進分為三個作用域進行查找,首先是本地,再是函數內(如果存在),之后才是全局變量,最后是內置作用域(內置作用域:內置函數所在模塊的范圍);
例如:
<script>
function fun() {
var city = 'hubei'
res = ad()
function ad() {
document.write("city="+city);
}
}
fun()
var name='zhouzhou'
function fun1() {
var city = 'hubei'
ad1()
}
function ad1() {
document.write("name="+name);
}
fun1()
</script>
3.函數生命周期
1.局部變量:從函數內部聲明到函數執行完成;
2.全局變量:聲明到這個頁面關閉;
4.匿名函數
匿名函數也叫自執行函數,它是將函數體作為一個整體放在括號中,后面直接傳參進行調用的一種方式。
例如:
//正常函數
function fun(arg) {
document.write("this is a function"+"<br>");
document.write("arg="+arg);
}
fun("zhouzhou")
//匿名函數
(function fun(arg) {
document.write("this is a function"+"<br>");
document.write("arg="+arg);
})("zhozuhou")
其實上面例子中,
(function fun(arg) {
document.write("this is a function"+"<br>");
document.write("arg="+arg);
})=fun
均為函數的內存地址值,后面直接帶括號加參數進行調用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。