JavaScript学习笔记之一(ECMAScript: 基础语法部分)

导读:本篇文章讲解 JavaScript学习笔记之一(ECMAScript: 基础语法部分),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1. JS基础

1.1 JS 组成

1.2 JS的几种书写形式

1.3 输入输出

2. 变量的使用

 3. 基本数据类型

 4. 运算符

5. 数组

6. 函数(function)

7. 对象


1. JS基础

1.1 JS 组成

谈JS组成,先了解一下
浏览器引擎
渲染引擎(解析html和CSS,也叫做“内核”)+JS引擎(JS解释器,比如Chrome中的V8,JS引擎逐行读取JS代码,解析为二进制指令,然后再执行)
需要注意的是
JS引擎都需要遵守这个标准来实现:ECMAScript

对于在浏览器上执行的JS来说,可以视作3部分

1.JS核心语法

2.DOM API: 页面文档对象模型, 对页面中的元素进行操作

3.BOM API: 浏览器对象模型, 对浏览器窗口进行操作

JS语法,只能写一些基础的逻辑

而要想完成更复杂的任务,比如完成和浏览器以及页面进行交互,就需要DOM API和BOM API;如果是运行在服务器端的JS,就需要使用node.js的API了。

1.2 JS的几种书写形式

(1) 内嵌式,把JS写到script标签中

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(2)行内式,把JS写到html元素的内部

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

3)外部式,把JS写到单独的.js文件中,在html里面通过script来引入

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)  

1.3 输入输出

(1)输入:prompt 弹出一个输入框

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(2)输出:alert 弹出一个警示对话框, 输出结果

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 (3)输出: console.log 在控制台打印一个日志(供程序员看)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

2. 变量的使用

(1)基本用法

a) 定义一个变量:

var 变量名 = 初始值;

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 不论创建的变量是啥类型,此时统一都是使用var这个关键字来表示的

至于想要创建变量具体的类型,这取决于初始化的值,是啥类型 

 也可以不初始化,不初始化的时候,变量的值是一个特殊的值 undefined

类型也就是undefined

b)使用变量: 读取/修改

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(2)动态类型

如果本来a是一个数字类型,在赋值的时候可以给它赋一个数字类型,也可以赋一个字符串类型,也可以是赋任意类型,这个时候a变量的类型,也就是随之改变

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 变量的类型,可以在运行过程中,随着赋值而发生改变,这种行为称为“动态类型”

而现在更倾向于使用let,来代替var,因为var不受作用域约束

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 3. 基本数据类型

number: 数字. 不区分整数和小数.
boolean: true 真, false 假.
string: 字符串类型.
undefined: 只有唯一的值 undefined. 表示未定义的值.
null: 只有唯一的值 null. 表示空值

(1)数字类型:number

var a = 07;      // 八进制整数, 以 0 开头
var b = 0xa;     // 十六进制整数, 以 0x 开头
var c = 0b10;    // 二进制整数, 以 0b 开头

特殊的数字值

Infinity:无穷大,大于任何数字,表示数字已经超过了JS能表示的范围

-Infinity:负无穷大,小于任何数字、表示数字已经超过了JS能表示的范围

NaN:表示当前的结果不是一个数字

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

1. 负无穷大 和 无穷小 不是一回事. 无穷小指无限趋近与 0, 值为 1 / Infinity

2. ‘hehe’ + 10
得到的不是
NaN,
而是
‘hehe10’,
会把数字隐式转成字符串
,
再进行字符串拼接
.
JavaScript学习笔记之一(ECMAScript: 基础语法部分)
3.
可以使用

isNaN 函数判定是不是一个非数字.
JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(2)字符串类型:String

string基本使用和java一样,这里再说明一下

如果
字符串中本来已经包含引号,那就可以使用转义字符或者单双引号搭配使用

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

求字符串长度,使用 String length 属性即可

JavaScript学习笔记之一(ECMAScript: 基础语法部分)JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 需要注意这里的长度单位是“字符”,”hehe”是4个字符;”你好”是2个字符

(3)布尔类型:Boolean

Boolean
参与运算时当做
1

0
来看待

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(4)未定义数据类型:undefined

如果一个变量没有被初始化过, 结果就是 undefined, undefined 类型(非法情况)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

JS是一个(动态类型+弱类型)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(5)空值类型:null

null表示当前这个值属于“没有值”这个概念,属于合法的情况

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 4. 运算符

JS运算符用法和Java运算符基本一样

需要注意的有:

(1)比较运算符中

== 和 !=(只是比较两个变量的值,而不是比较两个变量的类型,如果两个变量能够通过隐式类型转换,转成相同的值,此时就认为,也是相等的)

=== 和 !==(既要比较变量的值,也要比较类型,如果类型不相同,就直接认为不相等)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(2)逻辑运算符 && ll,JS中逻辑运算后返回的是 其中的一个表达式

c = a||b,

如果a的值,为真,此时c的值,就是表达式a的值

如果b的值,为假,此时c的值,就是表达式b的值

c = a&&b也类似

所以根据JS逻辑运算符这样的特性,就可以用来

判断变量是否为“空值”,如果是空值,则赋予一个默认值

(3)算术运算符:/   

JS中不区分整数和小数,都是number

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

5. 数组

(1)创建数组,两种方法

a)使用new关键字创建

b)使用字面量方式创建(JS 的数组不要求元素是相同类型.)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 (2)打印数组

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 (3)获取数组元素

使用下标的方式访问数组元素( 0 开始)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 如果下标超出范围读取元素, 则结果为 undefined

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

可以看到arr长度变为了101,然后数组的内容,前5个元素还是1,2,3,4,5

下标为100的元素是10,中间的空属性*95,意思就是中间的这些元素仍然是undefined

JavaScript学习笔记之一(ECMAScript: 基础语法部分) 此时-1的下标就是10,也可以说-1这里是一个属性(键值对),它并没有影响到数组长度,

 JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 JS中的数组,还可以有map的作用(表示键值对)。

数组是一个map,也可以说是一个“对象”

在JS里,是可以在运行时,给对象新增属性的

下面的这两种写法都是一样的效果

arr[‘hello’]就是给arr这个对象,新增一个属性,属性的名字是hello,属性的值是10;

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(4)获取数组长度

 通过.length

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

JS中,length属性是可以修改的

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 (5)给数组中新增元素

最常见的插入操作,push方法,能够给数组末尾追加一个元素

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

(6)删除数组中的元素

使用 splice 方法删除元素

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

splice方法也可以替换元素

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

6. 函数(function)

(1)语法格式

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 (2)函数参数个数

实参和形参之间的个数可以不匹配
.
但是实际开发一般要求形参和实参个数要匹配
a)当实参个数比形参多时,多出来的参数不参与函数运算
b)当形参个数比实参多时,多出的形参值为undefined

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 如果想让代码,既能支持数组相加,又能支持字符串相加,这个时候就肯定要判断,判定第一个参数,是字符串还是数字

(3)函数表达式

函数表达式,就是把一个函数赋值给另一个变量了

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

也可以这样,合并上面的操作(既定义了hello这个函数,又把hello赋值给了f)

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

再进一步,就可以把hello省略,此时就是完全依赖f来找到该函数

定义了一个没有名字的函数,并且把这个函数赋值给了f变量,后面就可以基于f来调用这个函数了

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 而这个也叫做“匿名函数”,也叫做lambda表达式

(4)作用域 & 作用域链

在ES6之前,只是有全局作用域和函数作用域

在ES6之后,引入了let,也就有了块级作用域,一个变量在{}内部定义,是无法被{}访问的

在JS中,{}内部的代码,是可以访问到{}外部的变量的

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

函数可以定义在函数内部
内层函数可以访问外层函数的局部变量
.
内部函数可以访问外部函数的变量
.
采取的是链式查找的方式
. 从内到外依次进行查找,一层一层往上找,如果还没找到
,
就去全局作用域查找,这个也叫做
“作用域链”
如果在作用域链的不同结点上,存在多个同名的变量上怎么办
那就从里往外走,先找到谁就用谁

7. 对象

对象,就是一些属性和方法的集合

java中,对象是需要现有类的,然后针对这个类进行实例化才能产生对象

JS中,对象是不依托于类的,在JS中所有的对象,都只有一个类型Object

在JS中,直接通过{}的方式,就可以创建对象(最常用)

每个属性和方法,都是通过“键值对”,这样的方式来表达出来

{}表示这个是个对象,后续就可以通过student这个属性名 方式来访问了

        let student = {
            name:'张三',
            age:20,
            height:180,
            weight:120,

            sing: function() {
                console.log("1111");
            },

            jump: function() {
                console.log("2222");
            },
        };

对象的使用 

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 也可以通过new Object 创建对象

JavaScript学习笔记之一(ECMAScript: 基础语法部分)

 前面的创建对象方式只能创建一个对象. 而使用构造函数可以创建多个对象

function 构造函数名(形参) {
    this.属性 = 值;
    this.方法 = function...
}
    
var obj = new 构造函数名(实参);

new后面的名字,是构造函数的名字,不是“类”的名字

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/87328.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!