JavaScript的基础篇
Posted 可口_可乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript的基础篇相关的知识,希望对你有一定的参考价值。
一、JavaScript的引入方式
1)js的引用方式
<body> <!--引入方式一,直接编写--> <script> alert("hello world"); </script> <!--引入方式二,导入文件--> <script src="hello.js"></script> </body>
说明:alert为打印的意思,访问页面,弹出框,打印输出的内容
2)js语言编写的基础规范
1)// 这是单行注释 2)/*这是多行注释*/ 3)javascript中的语句要以分号(;)为结束符 4)逻辑性代码,加tab
a=1;b=2; a=1 b=2;------错误 a=1 b=2 //推荐 a=1; b=2; { a=1; b=2; //推荐加tab a=1; b=2; }
二、JavaScript的变量
1)声明变量时不用声明变量类型. 全都使用var关键字
<body> <script> var a; var b=2; alert(a); // undefined alert(b); // 2 </script> </body>
2)一行可以声明多个变量,并且可以是不同类型
<body> <script> var name="user", age=20, job="运维工程师"; alert(name) alert(age) alert(job) </script> </body>
3) (了解) 声明变量时 可以不用var. 如果不用var 那么它是全局变量.
4) 变量命名,首字符只能是字母,下划线,$美元符 三选一,且区分大小写,x与X是两个变量)))
5 )变量还应遵守以下某条著名的命名规则:
Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头。例如: var myTestValue = 0, mySecondValue = "hi"; Pascal 标记法 首字母是大写的,接下来的字母都以大写字符开头。例如: Var MyTestValue = 0, MySecondValue = "hi"; 建议用匈牙利类型标记法 在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i 表示整数,s 表示字符串,如下所示“ Var iMyTestValue = 0, sMySecondValue = "hi";
6)变量定义的本质
var s="hello" var s2=new String("hello2") //本质 alert(s) alert(s2)
7) 声明变量的补充
1)let声明变量 ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。 例如:for循环的计数器就很适合使用let命令。 for (let i=0;i<arr.length;i++){...} 2)const声明变量 ES6新增const用来声明常量。一旦声明,其值就不能改变。 const PI = 3.1415; PI // 3.1415 PI = 3 // TypeError: "PI" is read-only
三、JavaScript的数据类型
1)js拥有动态数据类型
var x; // 此时x是undefined var x = 1; // 此时x是数字 var x = "Alex" // 此时x是字符串
2)数字类型(Number)
简介 最基本的数据类型 不区分整型数值和浮点型数值 所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式 能表示的最大值是±1.7976931348623157 x 10308 能表示的最小值是±5 x 10 -324 整数: 在JavaScript中10进制的整数由数字的序列组成 精确表达的范围是 -9007199254740992 (-253) 到 9007199254740992 (253) 超出范围的整数,精确度将受影响 浮点数: 使用小数点记录数据 例如:3.4,5.6 使用指数记录数据 例如:4.3e23 = 4.3 x 1023 16进制和8进制数的表达 16进制数据前面加上0x,八进制前面加0 16进制数是由0-9,A-F等16个字符组成 8进制数由0-7等8个数字组成 16进制和8进制与2进制的换算 # 2进制: 1111 0011 1101 0100 <-----> 16进制:0xF3D4 <-----> 10进制:62420 # 2进制: 1 111 001 111 010 100 <-----> 8进制:0171724
1)JavaScript不区分整型和浮点型,就只有一种数字类型。 var a = 12.34; var b = 20; var c = 123e5; // 12300000 var d = 123e-5; // 0.00123 2)还有一种NaN,表示不是一个数字(Not a Number) parseInt("123") // 返回123 parseInt("ABC") // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。 parseFloat("123.456") // 返回123.456
3)字符串(String)
简介 是由Unicode字符、数字、标点符号组成的序列 字符串常量首尾由单引号或双引号括起 JavaScript中没有字符类型 常用特殊字符在字符串中的表达 字符串中部分特殊字符必须加上右划线\\ 常用的转义字符 \\n:换行 \\\':单引号 \\":双引号 \\\\:右划线
3.1)常见字符串示例
var a = "Hello" var b = "world; var c = a + b; console.log(c); // 得到Helloworld
3.2)特殊字符的使用方法和效果和Unicode的插入方法
<script> var str="\\u4f60\\u597d\\n欢迎来到\\"JavaScript世界\\""; alert(str); </script> // 你好 // 欢迎来到JavaScript世界
3.3)字符串的常用方法
拼接字符串一般使用“+”
string.slice(start, stop)和string.substring(start, stop): 两者的相同点: 如果start等于end,返回空字符串 如果stop参数省略,则取到字符串末 如果某个参数超过string的长度,这个参数会被替换为string的长度 substirng()的特点: 如果 start > stop ,start和stop将被交换 如果参数是负数或者不是数字,将会被0替换 silce()的特点: 如果 start > stop 不会交换两者 如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符) 如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)
3.4)补充,模板字符串
ES6中引入了模板字符串。模板字符串(template string)是增强版的字符串,用反引号(`)标识。 它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
// 普通字符串 `这是普通字符串!` // 多行文本 `这是多行的 文本` // 字符串中嵌入变量 var name = "q1mi", time = "today"; `Hello ${name}, how are you ${time}?` 注意: 如果模板字符串中需要使用反引号,则在其前面要用反斜杠转义。 JSHint启用ES6语法支持:/* jshint esversion: 6 */
4)布尔型(Boolean)
1)布尔型的定义 var a = true; var b = false; ""(空字符串)、0、null、undefined、NaN都是false。 2)null与undefined null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null; undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。 小结:null表示变量的值是空,undefined则表示只声明了变量,但还没有赋值。
5)对象(object)
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型。
5.1)数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表
var a = [123, "ABC"]; console.log(a[1]); // 输出"ABC"
常用方法如下:
var arr1 = [11,22,33] arr1.push(44) arr1 all1.length arr1.pop()
5.2)对于sort注意点
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。 要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数, 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若 a 大于 b,则返回一个大于 0 的值。
function sortNumber(a,b){ return a - b } var arr1 = [11, 100, 22, 55, 33, 44] arr1.sort(sortNumber)
5.3)关于遍历数组中的元素,可以使用下面的方式:
var a = [10, 20, 30, 40]; for (var i=0;i<a.length;i++) { console.log(i); }
6)类型查询typeof
对变量或值调用 typeof 运算符将返回下列值之一: undefined - 如果变量是 Undefined 类型的 boolean - 如果变量是 Boolean 类型的 number - 如果变量是 Number 类型的 string - 如果变量是 String 类型的 object - 如果变量是一种引用类型或 Null 类型的
typeof "abc" // "string" typeof null // "object" typeof true // "boolean" typeof 123 // "number"
四、JavaScript的函数
1)函数的创建方式
// 普通函数定义 function f1() { console.log("Hello world!"); } f1() // 调用函数 // 带参数的函数 function f2(a, b) { console.log(arguments); // 内置的arguments对象 console.log(arguments.length); console.log(a, b); } // 带返回值的函数 function sum(a, b){ return a + b; } sum(1, 2); // 调用函数 // 匿名函数方式 var sum = function(a, b){ return a + b; } sum(1, 2); // 立即执行函数 (function(a, b){ return a + b; })(1, 2);
注意:函数只能返回一个值,如果要返回多个值,只能将其放在数组或对象中返回。
2)函数创建补充:ES6中允许使用“箭头”(=>)定义函数。
var f = v => v; // 等同于 var f = function(v){ return v; }
2.1)如果箭头函数不需要参数或需要多个参数,就是用圆括号代表参数部分:
var f = () => 5; // 等同于 var f = function(){return 5}; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2){ return num1 + num2; }
3)函数中的arguments参数
function add(a,b){ console.log(a+b); console.log(arguments.length) } add(1,2) //调用函数,并传参a=1,b=2 // 3 // 2
4)函数的全景变量和局部变量
局部变量: 在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。 全局变量: 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。 变量生存周期: JavaScript变量的生命期从它们被声明的时间开始。 局部变量会在函数运行以后被删除。 全局变量会在页面关闭后被删除。
5)作用域(嵌套函数):首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。
5.1)正常寻找变量
var city = "BeiJing"; function f() { var city = "ShangHai"; function inner(){ var city = "ShenZhen"; console.log(city); } inner(); } f(); // ShenZhen
5.2)嵌套函数
var city = "BeiJing"; function Bar() { console.log(city); } function f() { var city = "ShangHai"; return Bar; } var ret = f(); ret(); // BeiJing
5.3)闭包函数
var city = \'beijing\'; function func(){ var city = "shanghai"; function inner(){ console.log(city); } return inner; } var ret = func(); ret(); // 单独shanghai //================================= var city = \'beijing\'; function Bar(){ console.log(city); } function func(){ var city = \'shanghai\'; return Bar; } var ret = func(); ret(); //单独beijing // 但是 组合的实际结果 beijingbeijing
6)异常处理
try { //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行 } catch (e) { // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。 //e是一个局部变量,用来指向Error对象或者其他抛出的对象 } finally { //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。 }
五、函数的控制语句
1)if 语句
1.1)if ..else..(2种可能)
var week="Sunday" if (week=="Sunday"){ alert("8") }else{ alert("not 8") }
1.2)if...else if...else...(多种可能)
var a = 10; if (a > 5){ console.log("a > 5"); }else if (a < 5) { console.log("a < 5"); }else { console.log("a = 5"); }
2)switch,case语句
示例1 var x=3; switch (x){ case 1:y="星期一"; break; case 2:y="星期二"; break; case 3:y="星期三"; break; case 4:y="星期四"; break; case 5:y="星期五"; break; default: y="未定义"; } alert(y) 示例2 var day = new Date().getDay(); switch (day) { case 0: console.log("Sunday"); break; case 1: console.log("Monday"); break; default: console.log("...") }
switch中的case子句通常都会加break语句,否则程序会继续执行后续case中的语句。
3)for 循环语句
3.1)常见的for循环
var ret=0; for (var i=1;i<101;i=i+1){ ret+=i; } alert(ret) // 5050 ----------------- for (var i=1;i<10;i=i+1){ console.log(i) } //网页审查代码,Console ----------------- // for循环字典,列表 obj={"11":"111","22":[1,2]} alert(typeof(obj)); // object alert(obj); // [object Object] for (var i in obj){ console.log(i); console.log(obj[i]); } //网页审查元素,Console
3.2)for循环拼接字符串
// <h1>hello<br></h1> for (var i=1;i<=6;i++){ document.write("<H"+i+">hello</H "+i+"> "); document.write("<br>"); }
3.3)for循环的特殊例子
for (var i=1; i<=9; i++) { setTimeout( function timer(){ console.log( i ); },1000 ); } //提升JavaScript代码的可读性(基础篇)