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/*这是多行注释*/
3javascript中的语句要以分号(;)为结束符
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>
var 关键字

2)一行可以声明多个变量,并且可以是不同类型

<body>
    <script>
        var name="user", age=20, job="运维工程师";
        alert(name)
        alert(age)
        alert(job)
    </script>
</body>
var name="user", age=20

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.45.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)个字符结束(不包含该位置字符)
silce方法

 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;
  ""(空字符串)、0null、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 的值。
sort注意事项
function sortNumber(a,b){
    return a - b
}
var arr1 = [11, 100, 22, 55, 33, 44]
arr1.sort(sortNumber)
sort示例

5.3)关于遍历数组中的元素,可以使用下面的方式:

var a = [10, 20, 30, 40];
for (var i=0;i<a.length;i++) {
  console.log(i);
}
for遍历数组

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"
typeof示例

、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
f2(){return f1}

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代码块中始终会被执行。
}
try..catch...finally

五、函数的控制语句

1)if 语句

1.1)if ..else..(2种可能)

var week="Sunday"
if (week=="Sunday"){
    alert("8")
}else{
    alert("not 8")
}
if..else..

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");
}
if...else if...else...

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}

 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
常见for循环

3.2)for循环拼接字符串

// <h1>hello<br></h1>
for (var i=1;i<=6;i++){
    document.write("<H"+i+">hello</H "+i+"> ");
    document.write("<br>");
}
for拼接

3.3)for循环的特殊例子

for (var i=1; i<=9; i++) {
     setTimeout( function timer(){
     console.log( i );
     },1000 );
 }
//提升JavaScript代码的可读性(基础篇)

JavaScript基础篇

JavaScript系列之基础篇

python之基础篇——模块与包

JavaScript之基础篇

译ECMAScript 2016, 2017, 2018 新特性之必读篇