一:引入方式
{#1 直接编写#} <script> alert('hello yuan') </script> {#2 导入文件#} <script src="hello.js"></script>
1.声明变量时不用声明变量类型. 全都使用var关键字;
var valuable; var name="yn", age=20, job="lecturer";
2.函数声明
funciton method_name(){}
function add() { } var x=16; var y=18; alert(x+y);
3.声明变量时 可以不用var. 如果不用var 那么它是全局变量
4. 注释 支持多行注释和单行注释. /* */ //
5.JavaScript语言中代表特定含义的词称为保留字,不允许程序再定义为标识符
- 数字类型(Number)
- 字符串(String)
- 布尔型(Boolean)
- true/false
- Null & Undefined
Undefined 类型 Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。 当函数无明确返回值时,返回的也是值 "undefined"; Null 类型 如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
数据类型转换
数字 + 字符串:数字转换为字符串 数字 + 布尔值:true转换为1,false转换为0 字符串 + 布尔值:布尔值转换为字符串true或false
强制类型转换函数
函数parseInt: 强制转换成整数 例如parseInt("6.12")=6 ; parseInt(“12a")=12 ; parseInt(“a12")=NaN ;parseInt(“1a2")=1 NaN:not a number 函数parseFloat: 强制转换成浮点数 parseFloat("6.12")=6.12 函数eval: 将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true
类型查询函数(typeof)
函数typeof :查询数值当前类型 (string / number / boolean / object ) 例如typeof("test"+3) "string" 例如typeof(null) "object " 例如typeof(true+1) "number" 例如typeof(true-false) "number"
递增(++) 、递减(--)
console.log(i++);先输出在加 console.log(--i);先减在输出;
NaN参与的所有的比较都是false,除了!=
NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据
逻辑 AND 运算符(&&)
逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
- 如果某个运算数是 null,返回 null。
- 如果某个运算数是 NaN,返回 NaN。
- 如果某个运算数是 undefined,返回undefined
逻辑 OR 运算符(||)
与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值
赋值运算符
等性运算符
执行类型转换的规则如下:
- 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
- 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
- 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
- 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
- 值 null 和 undefined 相等。
- 在检查相等性时,不能把 null 和 undefined 转换成其他值。
- 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
- 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
关系运算符
比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.
比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
一:if-else控制语句
if (表达式){ 语句1; ...... }else if(){ 语句2; ..... }else{}
二:switch 选择控制语句
switch (x) { case "monday":alert("星期一");break; case "tuseday":alert("星期二");break; case "wesday":alert("星期三");break; case "thursday":alert("星期四");break; default:alert("空"); }
三:for 循环控制语句
循环方式一: for(var i=0;i<10;i++){ document.write("number"+i); document.write("<br>") } 循环方式二: list=["alex","tom","jim"]; for(i in list){ document.write(list[i]); document.write("<br>") }
1 doms=document.getElementsByTagName("p"); 2 for (var i=0;i<doms.length;i++){ 3 console.log(i) ; // 0 1 2 4 //console.log(doms[i]) 5 } 6 #valueable.length:获取变量长度 7 #document.getElementsByTagName("p"):获取指定元素标签
try { //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行 } catch (e) { // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。 //e是一个局部变量,用来指向Error对象或者其他抛出的对象 } finally { //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。 }
注:主动抛出异常 throw Error('xxxx')
11种内置对象
包括:
Array ,String , Date, Math, Boolean, Number Function, Global, Error, RegExp , Object
内置对象的分类
自动创建字符串对象:
var str1="hello world"; alert(str1.length);
调用字符串的对象属性或方法时自动创建对象,用完就丢弃
手工创建字符串对象:
var str1= new String("hello word"); alert(str1.length); alert(str1.substr(1,3));
采用new创建字符串对象str1,全局有效
String对象的方法(2)—— 大小写转换
1 var str1="AbcdEfgh"; 2 var str2=str1.toLowerCase();#全部变为小写 3 var str3=str1.toUpperCase();#全部变为大写 4 alert(str2); 5 //结果为"abcdefgh" 6 alert(str3); 7 //结果为"ABCDEFGH"
String对象的方法(3) —— 获取指定字符
书写格式 x.charAt(index) x.charCodeAt(index) 使用注解 x代表字符串对象 index代表字符位置 index从0开始编号 charAt返回index位置的字符 charCodeAt返回index位置的Unicode编码 ---------------------- var str1="welcome to the world of JS! 苑昊"; var str2=str1.charAt(28); var str3=str1.charCodeAt(28); alert(str2); //结果为"苑" alert(str3); //结果为33489
String对象的方法(4)—— 查询字符串
//书写格式 // //x.indexOf(findstr,index) //x.lastIndexOf(findstr) //------------------------------------- var str1="welcome to the world of JS!"; var str2=str1.indexOf("l"); var str3=str1.lastIndexOf("l"); alert(str2); //结果为2 alert(str3); //结果为18 //-------*********************************************************------- //书写格式 // //x.match(regexp) // //x.search(regexp) // //使用注解 // //x代表字符串对象 // //regexp代表正则表达式或字符串 // //match返回匹配字符串的数组,如果没有匹配则返回null // //search返回匹配字符串的首字符位置索引 //------------------------------------- var str1="welcome to the world of JS!"; var str2=str1.match("world"); var str3=str1.search("world"); alert(str2[0]); //结果为"world" alert(str3); //结果为15
String对象的方法(5) ——子字符串处理
截取子字符串
1 //截取子字符串 2 // 3 //书写格式 4 // 5 //x.substr(start, length) 6 // 7 //x.substring(start, end) 8 // 9 //使用注解 10 // 11 //x代表字符串对象 12 // 13 //start表示开始位置 14 // 15 //length表示截取长度 16 // 17 //end是结束位置加1 18 // 19 //第一个字符位置为0 20 21 22 var str1="abcdefgh"; 23 var str2=str1.substr(2,4); 24 var str3=str1.substring(2,4); 25 alert(str2); 26 //结果为"cdef" 27 alert(str3); 28 //结果为"cd" 29 30 //-------*********************************************************------- 31 //x.slice(start, end) 32 33 34 var str1="abcdefgh"; 35 var str2=str1.slice(2,4); 36 var str3=str1.slice(4); 37 var str4=str1.slice(2,-1); 38 var str5=str1.slice(-3,-1); 39 alert(str2); 40 //结果为"cd" 41 alert(str3); 42 //结果为"efgh" 43 alert(str4); 44 //结果为"cdefg" 45 alert(str5); 46 //结果为"fg"
替换子字符串
1 //x.replace(findstr,tostr) 2 3 var str1="abcdefgh"; 4 var str2=str1.replace("cd","aaa"); 5 alert(str2); 6 //结果为"abaaaefgh"
分割字符串
1 var str1="一,二,三,四,五,六,日"; 2 3 var strArray=str1.split(","); 4 5 alert(strArray[1]); 6 //结果为"二"
连接字符串
var str1="abcd"; var str2=str1.concat("efgh"); alert(str2); //结果为"abcdefgh"
创建一维数组
创建方式1: var a=[1,2,3]; 创建方式2: new Array(); // 创建数组时允许指定元素个数也可以不指定元素个数。 new Array(size);//if 1个参数且为数字,即代表size,not content new Array(element0, element1, ..., elementn)//也可以直接在建立对象时初始化数组元素,元素类型允许不同
创建二维数组
var cnweek=new Array(7); for (var i=0;i<=6;i++){ cnweek[i]=new Array(2); } cnweek[0][0]="星期日"; cnweek[0][1]="Sunday"; cnweek[1][0]="星期一"; cnweek[1][1]="Monday"; ... cnweek[6][0]="星期六"; cnweek[6][1]="Saturday";
Array对象的属性
获取数组元素个数:array.length
Array对象的方法
数据变为字符串方法:join()
var arr1=[1, 2, 3, 4, 5, 6, 7]; var str1=arr1.join("-"); alert(str1); //结果为"1-2-3-4-5-6-7"
连接数组-concat方法
//连接数组-concat方法 // //x.concat(value,...) var a = [1,2,3]; var b=a.concat(4,5) ; alert(a.toString()); //返回结果为1,2,3 alert(b.toString()); //返回结果为1,2,3,4,5
数组排序-reverse sort
//x.reverse() //x.sort() var arr1=[32, 12, 111, 444]; //var arr1=["a","d","f","c"]; arr1.reverse(); //颠倒数组元素 alert(arr1.toString()); //结果为444,111,12,32 arr1.sort(); //排序数组元素 alert(arr1.toString()); //结果为111,12,32,444 //------------------------------ arr=[1,5,2,100]; //arr.sort(); //alert(arr); //如果就想按着数字比较呢? arr.sort(intSort); alert(arr); function IntSort(a,b){ return a-b; }
数组切片-slice
var arr1=['a','b','c','d','e','f','g','h']; var arr2=arr1.slice(2,4); var arr3=arr1.slice(4); var arr4=arr1.slice(2,-1);
删除子数组
//x. splice(start, deleteCount, value, ...) // //使用注解 // //x代表数组对象 //splice的主要用途是对数组指定位置进行删除和插入 //start表示开始位置索引 //deleteCount删除数组元素的个数 //value表示在删除位置插入的数组元素 //value参数可以省略 var a = [1,2,3,4,5,6,7,8]; a.splice(1,2); //a变为 [1,4,5,6,7,8] alert(a.toString()); a.splice(1,1); //a变为[1,5,6,7,8] alert(a.toString()); a.splice(1,0,2,3); //a变为[1,2,3,5,6,7,8] alert(a.toString());
数组的进出栈操作(1)
//x.push(value, ...) 压栈 //x.pop() 弹栈 var arr1=[1,2,3]; arr1.push(4,5); alert(arr1); //结果为"1,2,3,4,5" arr1.push([6,7]); alert(arr1) //结果为"1,2,3,4,5,6,7" arr1.pop(); alert(arr1); //结果为"1,2,3,4,5"
数组的进出栈操作(2)
//x.unshift(value,...) //x.shift() //与pop和push相反实在前面进行增和删 var arr1=[1,2,3]; arr1.unshift(4,5); alert(arr1); //结果为"4,5,1,2,3" arr1. unshift([6,7]); alert(arr1); //结果为"6,7,4,5,1,2,3" arr1.shift(); alert(arr1); //结果为"4,5,1,2,3"
函数的定义:
function 函数名 (参数){ 函数体; return 返回值;#默认返回null }
Function 对象的 length 属性
Function 对象也有与所有对象共享的 valueOf() 方法和 toString() 方法。这两个方法返回的都是函数的源代码,在调试时尤其有用
alert(void(fun1(1,2)))#返回函数参数长度
函数的内置对象arguments
argument用于接收不定长度参数
function add(a,b){ console.log(a+b);//3 console.log(arguments.length);//2 console.log(arguments);//[1,2] } add(1,2) ------------------arguments的用处1 ------------------ function nxAdd(){ var result=0; for (var num in arguments){ result+=arguments[num] } alert(result) } nxAdd(1,2,3,4,5)
匿名函数
// 匿名函数的应用 (function(){ alert("tony"); } )() (function(arg){ console.log(arg); })('123'
作用域
js的作用域和py相似,if while等控制语句并没有自己作用域;而函数是有自己的作用域的;
嵌套函数的作用域:
var city = 'beijing'; function func(){ var city = 'shanghai'; function inner(){ var city = 'shenzhen'; console.log(city); } inner(); } func();
var city = 'beijing'; function Bar(){ console.log(city); } function func(){ var city = 'shanghai'; return Bar; } var ret = func(); ret(); //beijing
闭包:
var city = 'beijing'; function func(){ var city = "shanghai"; function inner(){ // var city = "langfang"; console.log(city); } return inner; } var ret = func(); ret();
BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 JavaScript 有能力与浏览器“对话”
window对象 所有浏览器都支持 window 对象。 概念上讲.一个html文档对应一个window对象. 功能上讲: 控制浏览器窗口的. 使用上讲: window对象不需要创建对象,直接使用即可.
1 alert() 显示带有一段消息和一个确认按钮的警告框。 2 confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。 3 prompt() 显示可提示用户输入的对话框。 4 open() 打开一个新的浏览器窗口或查找一个已命名的窗口。 5 close() 关闭浏览器窗口。 6 setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。 7 clearInterval() 取消由 setInterval() 设置的 timeout。 8 setTimeout() 在指定的毫秒数后调用函数或计算表达式。 9 clearTimeout() 取消由 setTimeout() 方法设置的 timeout。 10 scrollTo() 把内容滚动到指定的坐标。
setinterval和clearinterval
1 <script> 2 /* var x=confirm("hellow"); 3 console.log(x);*///返回true or false 4 /*返回本文内容或null 5 var m =prompt(); 6 console.log(m)*/ 7 //open("http://www.baidu.com")打开新的浏览器窗口 8 function begin() { 9 if(clock==undefined) { 10 show(); 11 clock = setInterval(show, 1000);//每隔多少秒执行函数 12 } 13 } 14 function show() { 15 var time=new Date().toLocaleString(); 16 var temp=document.getElementById("id1"); 17 temp.value=time; 18 } 19 function end() { 20 clearInterval(clock);//清楚设置 21 clock=undefined; 22 } 23 </script>
settimeout和cleartimeout
1 function f(){ 2 alert("hellow") 3 } 4 var x=setTimeout(f,100) 5 clearTimeout(x)
History 对象属性
History 对象包含用户(在浏览器窗口中)访问过的 URL。
History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问
length 返回浏览器历史列表中的 URL 数量
History对象方法
back() 加载 history 列表中的前一个 URL。 forward() 加载 history 列表中的下一个 URL。 go() 加载 history 列表中的某个具体页面。
1 history1: 2 <a href="history2.html">clickme</a> 3 <!--<button onclick="history.forward()">前进</button>--> 4 <button onclick="history.go(1)">go</button> 5 history2: 6 <!--<button onclick="history.back()">返回</button>--> 7 <button onclick="history.go(-1)">gob</button>
Location 对象包含有关当前 URL 的信息。
Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。
Location 对象方法
location.assign(URL) location.reload()刷新 location.replace(newURL)//注意与assign的区别,assign是以链接的形式
来源:https://www.cnblogs.com/Mr-l/p/10619121.html