第一章基本语法

author author     2022-09-06     714

关键词:

(本文为阮一峰js标准教程的学习笔记,旨在总结该教程中涉及的知识点大纲及个人所做的一些拓展,方便作为“目录”或者“大纲”复习和查漏补缺,详细内容请参见阮一峰教程原文)

********第一章 基本语法********

一.语句 表达式
1.js执行单位为line;
2.空语句 ;;;
3.少写无意义语句  "abc";(js引擎认为是语句但是没有任何意义)
4.允许多个语句写一行; var a=1+3;var b="abc";
5.分号代表语句的结束
6.语句(statement)是为了完成某种任务而进行的操作
7.1+ 3叫做表达式(expression),指一个为了得到返回值的计算式。
8.语句和表达式的区别:前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。
9.凡是JavaScript语言中预期为值的地方,都可以使用表达式。

二.变量
1.变量概念:对"值"引用,建立变量与值的引用关系,包括传值引用和传址引用。
       内存层面理解:变量空间(没声明一个变量相当于开辟一个内存空间)
       最通俗的理解:用来存储一些可以变化的数据。
2.js语法中全局变量最大缺点是对任何一个代码块都是可读可写的,这对实现特定功能代码的模块化和重复使用非常不利(语言在最初设计时没有考虑太多,会有很多不合理的地方)。
3.只声明未赋值 值是undefined js一个关键字,是个特殊值,表示未定义。
4.忘记声明只赋值问题:  不自觉创建全局变量;js严格模式下会报错;
5.delete命令不能删 var a=1 可删a=1 delete可删window对象的a属性,但是不能删var命令声明的全局变量
6.未声明使用报错 xxx is not defined
7.一条var 声明多个变量 var a,b;
8.js动态类型,弱类型语言。变量类型无限制,变量类型会随赋的值变化。
9.如果使用var重新声明一个已经存在的变量,是无效的。

var x = 1;
var x;
x // 1

上面代码中,变量x声明了两次,第二次声明是无效的。

但是,如果第二次声明的同时还赋值了,则会覆盖掉前面的值。

var x = 1;
var x = 2;

// 等同于

var x = 1;
var x;
x = 2;

两次用var命令声明相同的变量,第二次声明并不会新开辟内存空间?【存疑,目前相信阮老师】
10.严格地说,var a = 1 与 a = 1,这两条语句的效果不完全一样,主要体现在delete命令无法删除前者。不过,绝大多数情况下,这种差异是可以忽略的。


11.变量提升:所有的变量的声明语句,都会(在js引擎预读时)被提升到代码的头部,这就叫做变量提升(hoisting)。
12.JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。
console.log(a);
var a = 1;
因为存在变量提升,真正运行的是下面的代码。

var a;
console.log(a);
a = 1;

最后的结果是显示undefined,表示变量a已声明,但还未赋值。
13.【js代码究竟会不会预编译查错,是预读还是预编译,未知】

14.变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升。
console.log(b);
b = 1;
报错,b不是用var命令声明的,JavaScript引擎不会将其提升,而只是视为对顶层对象的b属性的赋值。

三.标识符
1.概念:用来识别具体事物的一个名称(比如:变量名、函数名)。
2.js语言对标识符大小写敏感:a和A
3.有一套标识符命名规则,js引擎遇非法标识符报错。
    *不能有+ - * / 连词线 首位不能是数字;
    *中文可作合法标识符,可为变量名,少用
    *保留字不作标识符;
    *保留字,关键字,Infinity/NaN/undefined不能作为标识符;
4.注释:js引擎忽略的部分;
    *单行注//
    *多行注/**/
5.历史上JavaScript兼容HTML代码的注释,所以<!--和-->也被视为单行注释。

x = 1; <!-- x = 2;
--> x = 3;

上面代码中,只有x = 1会执行,其他的部分都被注释掉了。

四、区块
1.JavaScript使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。
与大多数编程语言不一样,JavaScript的区块不构成单独的作用域(scope)。也就是说,区块中的变量与区块外的变量,属于同一个作用域。

需要注意的是,-->只有在行首,才会被当成单行注释,否则就是一个运算符。
2.{
  var a = 1;
}

a // 1

单独使用的区块在JavaScript中意义不大,很少出现。区块往往用来构成其他更复杂的语法结构
,比如for、if、while、function等。

《控制语句:通过规定的语法结构来控制代码/语句的在js引擎中的执行,这种执行流程的控制是代码程序具有逻辑性的体现之一》
五、条件语句
1.if结构
if (expression布尔表达式:要求返回值是布尔值,由于js弱类型,这里即使不是布尔js引擎在执行代码时会自动转换)
  statement;

// 或者

if (expression) statement;

*写符合语法的代码,也就是遵循一门语言规定的语法结构写代码是保证程序能按照特定逻辑执行的基础。
*(条件)后是一条语句可省略{},多条语句加{};
*相等运算符与赋值运算符的常见错误
解决方法:常量写左边;
if(2=x){}
*优先采用“严格相等”,而不是相等,从而避免类型自动转换的干扰;

2.if..else结构
if (m === 3) {
  // then
} else {
  // else
}

*else代码块总是跟随离自己最近的那个if语句。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log(‘hello‘);
else console.log(‘world‘);

相当于下面这样。

if (m !== 1) {
  if (n === 2) {
    console.log(‘hello‘);    
  } else {
    console.log(‘world‘);
  }
}

*多个if...else语句连写
if (m === 0) {
  // ...
} else if (m === 1) {
  // ...
} else {
  // ...
}

等价于
if(m === 0){
//...
}else{
  if (m === 1) {
  // ...
} else{
  // ...
}
}

*条件判断后执行的代码如果是一条语句不需要加{}
if (n === 2) console.log(‘hello‘);
else console.log(‘world‘);

3.switch结构
switch (fruit) {
  case "banana":
    // ...任意代码
    break;
  case "apple":
    // ...
    break;
  default:
    // ...
}

*替换多个if..else连写
*break不能少,否则一直执行到底不能跳出
*所有case都不符合,执行default内代码
*switch()括号内,和case后面可以是变量,表达式,或者某个类型的值,但不能是语句!
*switch()内核case后面的表达式的值比较采用“===”

4.三元?:
即该运算符需要三个运算子)?:,也可以用于逻辑判断,简化版的if条件判断结构,可替代if..else..语句
(condition) ? expr1 : expr2
()内值为true返回expr1,false返回expr2

六.循环控制语句:该结构可以实现某段代码/语句/操作的重复执行。
1.while循环
while (expression)
  statement;

// 或者

while (expression) statement;

*一条语句可以无{},多条语句{}
*while(true){}无限死循环。
2.for循环。
for (initialize; test; increment)
  statement

// 或者

for (initialize; test; increment) {
  statement
}


    初始化表达式(initialize):确定循环的初始值,只在循环开始时执行一次。
    测试表达式(test):检查循环条件,只要为真就进行后续操作。
    递增表达式(increment):完成后续操作,然后返回上一步,再一次检查循环条件。


*一条语句可以无{},多条语句{}【未测试】
*for与while转化问题
*for语句()中可省略任何一个,也可全省,作死玩法想用您随意
for(;;;){
  console.log("Hello World");
}

3.do..while循环
do
  statement
while (expression);

// 或者

do {
  statement
} while (expression);

*while()后面的;不能省略
*一条语句无{},多条语句必须{}【未验证】

4.break语句和continue语句

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。

4.1 break跳出代码块或者循环;
4.2continue终止本轮循环,返回循环头部开始下一轮;
4.3实例:var i = 0;

while(i < 100) {
  console.log(‘i当前为:‘ + i);
  i++;
  if (i === 10) break;
}

for (var i = 0; i < 5; i++) {
  console.log(i);
  if (i === 3)
    break;
}
// 0
// 1
// 2
// 3

4.4不带参数的break语句和continue语句都只针对最内层循环。(跳出最内层循环/进入下一轮最内层循环)
var i = 0;

while (i < 100){
  i++;
  if (i%2 === 0) continue;
  console.log(‘i当前为:‘ + i);
}
5.标签
JavaScript语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

label:
  statement

标签可以是任意的标识符,但是不能是保留字,语句部分可以是任意语句。
标签通常与break语句和continue语句配合使用,跳出特定的循环。

5.1与break语句的搭配使用
top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log(‘i=‘ + i + ‘, j=‘ + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。
5.2与continue搭配
continue语句也可以与标签配合使用。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) continue top;
      console.log(‘i=‘ + i + ‘, j=‘ + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2

上面代码中,continue命令后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。
5.3 break或continue命令后的标签不加双引号
5.4break、continue语句结束加分号

第一章––java基础语法

第一章––Java基础语法.wiz-editor-body.wiz-code-container{position:relative;padding:8px0;margin:5px25px5px5px;text-indent:0;text-align:left}.CodeMirror{font-family:Consolas,"LiberationMono",Menlo,Courier,monos 查看详情

第一章开始

第一章基本初步介绍了下一个主程序,块,类型,编译方法,标准输入和输出。一个表达式通常由若干运算对象和(一般来说)一个运算符组成。注释,一个程序很重要的一部分就是文档,即注释。控制流whileforif。编译解释:sy... 查看详情

第一章javascript基础

JavaScript核心语法:基本数据类型: undefined(未定义类型) 当声明的变量未初始化时,该变量的默认值是undefined null(空类型)        undefined的值是null派生来的,但null则表示对该变量赋予了... 查看详情

html--第一章的基本知识

知识预览HTML初识常用标签回到顶部HTML初识web服务本质importsocketdefmain():sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.bind((‘localhost‘,8081))sock.listen(5)whileTrue:print("serverisworking.....")conn,address 查看详情

第一章基本概念

GUITurboAssembler下载地址:https://sourceforge.net/projects/guitasm8086/?source=typ_redirect虚拟机: 可以执行翻译或解释 一般结构为:数字结构->微指令->指令集->操作系统->汇编->高级语言在内存中,左边是高位,右边是低位 2进制转十进制=... 查看详情

labwindows/cvi第一章:基本规则

一、#include<stdio.h>   //头文件,#号是预处理指令,standardinputoutputheader的缩写。voidmain()        //主函数{   printf("Hello ");  / 查看详情

第一章财务管理基本原理

第一章财务管理基本原理[TOC]财务管理的主要内容★★筹资活动长期筹资短期筹资投资活动长期投资短期投资营业活动长期投资公司对经营性长期资产的直接投资。【提示】公司对子公司股权投资和非子公司控股权投资均属于经... 查看详情

第一章:基本数据类型

前言    这是一大块非常基础但是也非常重要的知识。怎么证明呢?举个例子:编程这东西吧,就像是做菜,你做菜首先得有材料你才能做吧!这些数据就是材料,有盐、有醋、有大白菜,最后你把他们按特定的顺... 查看详情

第一章数据库基本操作

1.修改提示符我的常用:prompt[email protected]hd>2.查看数据库SHOWDATABASES;编码查看:SHOWCREATEDATABASE(name);查看选择的数据库:SELECTDATABASE();3.选择数据库USE(name);4.创建数据库 CREATEDATABASE(name)CHARACTER SET=utf8; 查看详情

web的进击之路-第一章html基本标签

一、HTML简介  超文本标记语言,标准通用标记语言下的一个应用。  “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。  超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部... 查看详情

spring-第一章-基本用法(代码片段)

  一,简介spring是一个开源框架是一个非常强大的容器框架,分离项目组件之间的依赖关系,由spring容器管理整个项目的资源和配置;通常我们可以称spring是容器大管家(项目大管家)功能:  (1) 控制反转(IOC)  (2)AOP变成的... 查看详情

第一章机器学习基本概念

1.机器学习主要是通过计算机在已有的数据上(经验)产生相应的模型(学习算法),在面临新的情况时,模型能给出相应的判断。所以说机器学习是研究学习算法的学问。2基本术语2.1以西瓜是否成熟为例,(色泽=青绿;根蒂=... 查看详情

第一章:gis的基本概念

一、GIS的基本概念  1.GIS是一门集计算机科学、信息学、地理学等多门学科为一体的学科,是在计算机软件和硬件支持下,运用系统工程和信息科学的理论,科学管理和综合分析具有空间内涵的地理数据,以提供对规划、管理... 查看详情

第一章java的基本程序设计结构(代码片段)

1.1一个简单的JAVA程序publicclassFirstSamplepublicstaticvoidmain(String[]args)System.out.println("HelloWorld!");Java大小写敏感。关键字class后面紧跟类名。定义类名字必须以字母开头,后面可以跟字母和数字的任意组合。不能使用java保留字作... 查看详情

第一章基本概念_递归的全排列算法

voidperm(char*list,inti,intn){   intj,temp;   if(i==n){      for(j=0;j<=n;j++)         print 查看详情

hands-ondataanalysis第一章(代码片段)

Hands-ondataanalysis第一章文章目录Hands-ondataanalysis第一章1.1.数据载入1.2.修改列明,重定义索引1.3.查看数据的基本信息1.4.只观察前几行数据或者末尾几行数据1.5.判断数据是否为空2.1.数据排序2.2.DataFrame相加2.3.观察frame2的数据基... 查看详情

javascript第一章

   学习了javascript第一章,对js有了初步的了解。   首先,javascript主要由三个部分组成:核心(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)   ECMAScript主要是用来提供核心语言,它包... 查看详情

计算机网络原理精讲--第一章基本介绍

1.1基本概念局域网:覆盖范围小、自己花钱购买设备、带宽固定、自己维护、100米内、带宽10M100M1000MInternet:由ISP组成、自己的机房、对网民提供访问Internet连接广域网:距离远、花钱租带宽带宽:用户到ISP(运营商)之间的带... 查看详情