JavaScript(1) -- JS入门

1.   JavaScript介绍

JavaScript是属于HTML与Web的解释性编程语言,也是一种以函数优先的弱类型轻量级的脚本语言,无需进行预编译即可与HTML前端页面进行行为交互,支持跨平台运行,可在多种平台下(如Windows、Linux、Mac、Android、iOS等)。目前JavaScript被广泛地应用于Web前端Html实现页面交互、实现浏览器页面事件响应、前端数据验证、检验访客浏览器信息、控制cookies的创建与修改、基于Node.js技术进行服务器端编程。

2.   JavaScript基本语法

2.1. JavaScript的三种定义方式

JS一般有三种定义的方式:

①    写在<a>标签的href属性内;

②    写在<script>标签内;

③    单独写一个JS文件,使用外连的方式引入;

下面直接给出代码示例以区分这三种方式的不同:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta charset="UTF-8">
    <title>三种JS的写法</title>
    <!--第二种写法:写在script代码块中-->
    <script type="text/javascript">
        alert("我在块里面!")
    </script>
    <!--第三种写法:单独写一个js文件,在src中引入.js文件-->
    <script type="text/javascript" src="./js/01hello.js"></script>
</head>
<body>
    <!--
        JS的三种写法:
        ①写在标签内;
        ②写在script标签内;
        ③单独写一个JS文件
    -->
<!--第一种写法:表示的是伪协议,给浏览器看,伪协议之后的代码当做JS代码执行-->
<a href="javascript:console.debug('点你就点你')">点击我</a>
</body>
</html>

2.2.  JavaScript的标识符

JavaScript中的标识符与Java中标识符的定义是一样的,标识符是为了标识程序中诸如类、方法和变量等元素而采用的命名。

所有的标识符必须遵从以下规则:

  • 标识符是由字母、数字、下划线(_)和美元符号($)构成的字符序列。
  • 标识符必须以字母、下划线(_)或美元符号($)开头,不能以数字开头。
  • 标识符不能是JavaScript中的保留字与关键字。
  • 标识符不能是true、false或null。
  • 标识符可以为任意长度。

合法的标识符举例:indentifier、username、user_name、_userName、$username;

非法的标识符举例:int、98.3、Hello World。

JavaScript是严格区分大小写的,所以area、Area和AREA是不同的标识符,使用标识符时应该使用具有描述性的标识符以提高程序的可读性。

2.3.  关键字与保留字

关键字包含:

break  continue  debugger  do … while  for  function  if … else  return  switch

try … catch  var  case  break  case  continue  default  delete  do  finally  in

instanceof  new  return  this  throw  typeof  void  with

保留字包含:

abstract  Boolean  byte  char  class  const   double  enum  export  extendsfinal  float  goto  implements  import  int  interface  long  package  privateprotected  public  short  static  super  synchronized  throws  transient  volatile

2.4.  分割符与注释

JavaScript每条执行语句以分号”;”分隔,以分号分隔在实际执行过程中不是必需的(去除”;”可以执行),但是在实际编写代码过程中强烈建议加上分号!

var a = 5;
var b = 6;
var c = a + b;

如果有分号分隔,允许在同一行写多条执行语句:

var a = 5;b = 6;c = a + b;
console.debug(a);  //5
console.debug(b);  //6
console.debug(c);  //11

JavaScript注释用于解释JavaScript代码,增强其可读性。JavaScript注释也可以用于在测试替代代码时阻止执行。

JavaScirpt中主要有三种注释类型:

单行注释、多行注释、文档注释

单行注释以//开头,任何位于//与行末之间的文本都会被JavaScript忽略(不会执行)。

多行注释以/*开头,以*/结尾,任何位于/*与*/之间的文本都会被JavaScript忽略。

文档注释以/**开头,以*/结尾,任何位于/**与*/之间的文本都会被JavaScript忽略。

//单行注释
var x = 5;      // 声明 x,为其赋值 5
var y = x + 2;  // 声明 y,为其赋值 x + 2

/*
 多行注释
 下面的代码会改变
 网页中
 id = "myH" 的标题
 以及 id = "myP" 的段落:
*/
document.getElementById("myH").innerHTML = "我的第一张页面";
document.getElementById("myP").innerHTML = "我的第一个段落。";

/**
 文档注释
 一般用于公司签名抬头标明产品文件类型
 */

2.5.  空白字符

JavaScript会忽略多个空格,我们可以在脚本语句中添加多个空格间隔语句代码,以增强程序的可读性。

下面这两行是相等的:

var person = "Bill";
var person="Bill";

在运算符旁边(= + - * /)添加空格是个好习惯:

var x = y + z;

3.   JavaScript变量

JavaScript变量是用于存储数据值的一个标识,指向具体的内存地址,保存对应的值或者对象地址值。

变量声明首先要遵循标识符命名原则,并且JavaScript声明变量要使用var关键字,比如:

var name;
console.debug(name);  //打印空字符
console.debug(typeof(name)); //string

声明变量的同时可以为变量赋值,并且在之后改变该变量的值,注意:不能改变变量的类型了,比如:

var name = "张三";
console.debug(name); //张三
console.debug(typeof(name)); //string
name = true;
console.debug(name); //true
console.debug(typeof(name)); //string

此外,JavaScript中还允许不事先声明变量而直接使用,比如:

num = 1234;
console.debug(num); //1234

注意:JavaScript定义变量无需指定变量的类型,任何类型都可以使用var关键字声明。

4.   JavaScript数据类型

JavaScript中数据类型包含:字符串型、数值型、布尔型、数组型、对象类型等。

①    字符串型(string)

字符串(或文本字符串)是一串字符,比如:”Bill Gates”。

字符串被引号包围,你可以使用单引号或者双引号:

var carName = "Porsche 911";   // 使用双引号
var carName = 'Porsche 911';   // 使用单引号

也可以在字符串内使用引号,只要这些引号与包围的字符串的引号不匹配:

var answer = "It's alright";             // 双引号内的单引号
var answer = "He is called 'Bill'";    // 双引号内的单引号
var answer = 'He is called "Bill"';    // 单引号内的双引号

②    数值型(number)

JavaScript只有一种数值类型。写数值时用不用小数点均可。

var x1 = 34.00;     // 带小数点
var x2 = 34;        // 不带小数点

超大或超小的数值可以用科学计数法来表示。

var num1 = 123e5;      // 12300000
var num2 = 123e-5;     // 0.00123

③    布尔型(boolean)

JavaScript布尔值只有两个值:true或者false。

var res = true;
console.debug(res); //true
console.debug(typeof(res)); //boolean

④   数组型

JavaScript数组用方括号表示,数组项目元素用逗号分隔,如下代码声明了一个名为cars的数组,包含三个元素(汽车品牌):

var arr = ["Porsche", "Volvo", "BMW"];
console.debug(arr.length); //3
console.debug(arr[0]); //数组索引从0开始,到数组长度-1结束,取值使用arr[索引位置];Porsche
console.debug(arr[arr.length-1]); //BMW

⑤    对象类型

JavaScript对象是使用花括号来表示。

对象属性是name:value键值对,用逗号分隔开。声明一个对象类型并使用:

//对象类型
var person = {
   firstName : "Bill",
   lastName  : "Gates",
   age       : 62,
   eyeColor  : "blue"
};
//对象取值:使用对象.属性取值
console.debug(person.firstName + " is " + person.age + " years old"); //Bill is 62 years old

4.1. typeof运算符

使用typeof可以确定JavaScript变量的类型:

typeof运算符会返回变量或表达式的类型:

typeof运算符可以返回 以下原始类型之一:

  • string
  • number
  • boolean
  • object
  • undefined
var name = "张三";
typeof name; //string
typeof 3.14  // 返回 "number"
typeof true // 返回 "boolean"
typeof x    // 返回 "undefined" (假如 x 没有值)
var arr = ["Porsche", "Volvo", "BMW"];
typeof arr; //object

同时在处理复杂数据时,typeof运算符可用返回以下两种类型之一:

  • function
  • object

typeof运算符会把对象、数组或null返回object;

typeof运算符会把函数返回function

typeof null     // 返回 "object"
typeof function myFunc(){}  // 返回 "function"

4.2. Undefined/Null/空值

①    undefined

在JavaScript中,没有值的变量,即变量初始化没有赋值,那么其值就是undefined。typeof也返回undefined。

var person;
console.debug(person); //返回undefined

②    Null

在JavaScript中,null的数据类型是对象。

var person = null;
console.debug(person); //null
console.debug(typeof person); //object

undefined与null的区别:

undefined与null的值相等,但是类型不相等;

typeof undefined       // undefined
typeof null             // object
null === undefined    // false
null == undefined     // true

③    空值

空值表示字符串变量的值为空字符串,空的字符串既有值也有类型。

var str = "";
console.debug(str); //""
console.debug(typeof str); //string

5.   JavaScript函数

JavaScript函数是被设计为执行特定任务的代码块。JavaScript函数会在某代码调用它时被执行。

5.1. JavaScript函数语法

JavaScript函数通过function关键词进行定义,其后是函数名和括号()。

函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。

具体的示例如下:

function 函数名(…参数args){
    方法体—执行代码
}

函数的作用:避免代码在页面加载的时候就执行了,并且一次定义,多次使用(调用)。

5.2. 函数返回值

JavaScript函数方法体中使用return来返回此函数被调用后的执行结果。在函数中通常会计算出执行结果,返回值会由return返回调用者。而在function函数上无需声明函数返回类型(JS的弱类型的灵活性)。

示例:

function getMsg() {
    var msg = "随便返回一个字符串吧";
    return msg;
}
console.debug(getMsg()); //随便返回一个字符串吧
console.debug(getMsg); //ƒ getMsg() { var msg = "随便返回一个字符串吧"; return msg;}

函数返回调用需要使用:函数名()来调用,而单独使用函数名则会返回整个函数体。

5.3. 局部变量与全局变量

在JavaScript函数中声明的变量,会成为函数的局部变量,局部变量只能在函数内部访问。

由于局部变量只能被其函数识别,因此可以在不同函数中使用相同名称的变量。

局部变量在函数开始时创建,在函数完成时被删除。

全局变量是定义在函数体外部的变量,与局部变量无关,可以全局使用,但是如果在函数体内部的局部变量与全局变量名相同,那么在该函数被调用后可能会改变该全局变量的值。

示例如下:

/**
* 1.JS中的全局与局部变量的定义
*/
var str = "全局变量";

function showStr() {
   str = "局部变量";
   console.debug(str);
}

showStr();  //局部变量
console.debug(str); //局部变量,str整体的值进入到showStr()方法中被改变

console.debug("================分割线==================")

var str2 = "全局变量2";

function showStr2() {
   var str2 = "局部变量2";
   console.debug(str2);
}

showStr2();  //局部变量2
console.debug(str2); //全局变量2,定义在showStr2()函数中的str2变量已经执行完毕被销毁

6.   更多

本节JavaScript(1) – JS入门主要针对JS初学知识体系中常用知识进行汇总,省略了JS输出打印、JS运算符、JS流程控制部分的说明(这部分比较简单,和Java语言也大体类型),简单知识就不再一一累述,学习更多完整的JavaScript入门知识体系请详见W3shool网址,本部分知识参考W3school网址:

https://www.w3school.com.cn/js/index.asp

学习章节:JS教程 —— JS函数部分,后续将陆续汇总更新更多JavaScript章节自我学习汇总内容。

(0)

相关推荐

  • JS中的基本类型和引用类型

    内置类型 JS 中七种内置类型(null,undefined,boolean,number,string,symbol,object)又分为两大类型 两大类型: 基本类型: null,undefine ...

  • JavaScript的简介与语法大合集

    以最新的JavaScript标准为基准.通过简单但足够详细的内容,为你讲解从基础到高阶的JavaScript相关知识. JavaScript简介 让我们来看看JavaScript有什么特别之处,我们可 ...

  • JavaScript入门-js的变量以及运算

    关于js变量 变量,就是一个用来存储数据的容器 一般来说,我们的变量都是可以得先声明,再使用,就像是一个东西先必须存在,才能看得见摸得着.然而在js里(es5),可以先使用,后声明. a = 100; ...

  • 深入理解JavaScript作用域和作用域链

    目录 前言 作用域(Scope) 1.什么是作用域 2.全局作用域和函数作用域 3.块级作用域 作用域链 1.什么是自由变量 2.什么是作用域链 3.关于自由变量的取值 作用域与执行上下文 解释阶段: ...

  • Node.js 入门你需要知道的 10 个问题

    前端技术优选 以下文章来源于Nodejs技术栈 ,作者五月君 本文为您分享「Node.js 入门你需要知道的 10 个问题」这些问题可能也是面试中会被问到的,当然问题不仅仅是这 10 道,因此,最近开 ...

  • js入门与实战课前准备和编辑工具介绍

    0.1学习方法及态度 没有学不会的知识,只有学不会的傻子! 学习过程很痛苦,不学习的日子是苦难! 0.2学前准备 拒绝二指弹 金山打字练习,及格线100/分 Windows常用快捷键 CTRL+C:复 ...

  • JavaScript 事件循环:从起源到浏览器再到 Node.js

    冰森 前端技术优选 今天 很多文章都在讨论事件循环 (Event Loop) 是什么,而几乎没有人讨论为什么 JavaScript 中会有事件循环.博主认为这是为什么很多人都不能很好理解事件循环的一个 ...

  • Python和JavaScript哪个简单?Python入门!

    在编程界,Python和JavaScript都是非常具有影响力的编程语言,占据着主导性的地位,而且简单易学.通俗易懂,非常适合0基础小白.那么Python和JavaScript哪个更容易上手呢?我们通 ...

  • [js] 第63天 举例子说明javascript的变量声明提升和函数声明提升

    今日试题: 举例子说明javascript的变量声明提升和函数声明提升 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我每天多 ...

  • 10分钟带你快速入门JavaScript

    Javascript,从"最被误解的语言",最后神奇地转变成为"最流行的语言",证明它经受得起时间的考验.虽然单独来看,它的交互设计有些失败,但是加上Ajax的 ...

  • 小马哥-2020零基础JavaScript基础入门全套教程

    ┃  ┃  ┃  ┣━12-44 hasOwnProperty方法.mp4 ┃  ┃  ┃  ┣━9-5 作用域变量查找的机制(重要).mp4( i+ @) s# M6 w% S, w; M ┃  ┃ ...

  • .net core 嵌入 js(javascript)脚本引擎

    dotNET跨平台 2021-07-07 以下文章来源于dotnet微服务 ,作者webmote dotnet微服务dotnet5是微软进阶跨平台后台服务开发的统一入口,随着微软在开源.开放的路上越走 ...