1.简单值和复杂值的区别

简单数据类型所创建的值被称之为简单值,而复杂数据 类型所创建的值被称之为复杂值。

那么简单值和复杂值具体有什么区别呢?

1.简单值(或原始值)

简单值是表示JS中可用的数据或信息的最底层形式或最简单形式。简单类型的值被称为简单值, 是因为它们是不可细化的。

也就是说,数字是数字,字符是字符,布尔值是true或false, null和undefined就是null和 undefined。

2.复杂值

在JavaScript中,对象就是一个复杂值。因为对象可以向下拆分,拆分成多个简单值或者复杂 值。复杂值在内存中的大小是未知的,因为复杂值可以包含任何值,而不是一个特定的已知值。 所以复杂值的数据都是存储于堆区里面。

3.访问方式

按值访问

简单值是作为不可细化的值进行存储和使用的,引用它们会转移其值

引用访问

复杂值是通过引用进行存储和操作的,而不是实际的值。创建一个包含复杂对象的变量时,其值 是内存中的一个引用地址。引用一个复杂对象时,使用它的名称(即变量或对象属性)通过内存中 的引用地址获取该对象值

4.比较方式

简单值采用值比较,而复杂值采用引用比较。复杂值只有在引用相同的对象(即有相同的地址)时 才相等。即使是包含相同对象的两个变量也彼此不相等,因为它们并不指向同一个对象

5.动态属性

对于复杂值,可以为其添加属性和方法,也可以改变和删除其属性和方法;但简单值不可以添加 属性和方法

6.变量赋值

最后说一下关于变量的赋值,其实是可以分为直接赋值和引用赋值的。直接赋值,就是指将简单 值赋值给变量,而引用赋值是指将一个复杂值的引用赋值给变量,这个引用指向堆区实际存在的 数据。

直接赋值

let a = 3;

let b = a;

b = 5;

console.log(a);//3

引用赋值

let a = {value : 1};

let b = a;

b.value = 10;

console.log(a.value);//10

2类型转换

通过前面的介绍,我们已经知道了在JavaScript中有好几种不同的数据类型。然而这些数据类型 都是可以相互转换的。类型转换可以分为两种,隐性转换和强制转换。

1.隐性转换

当不同数据类型进行相互运算的时候,

当对非布尔类型的数据求布尔值的时候

预期为数字的时候:

算术运算的时候,我们的结果和运算的数都是数字,数据会转换为数字进行计算(-* / %)

2.强制转换

转换为数值 number() , parseInt() , parseFloat()转换函数

小技巧:

・转换字符串:a=""+数据

-转换布尔:!数据类型

-转换数值:数据类型*或/I

运算符

1算数运算符

常见的算数运算符有加减乘除和取模运算。主要需要注意的就是,在动态语言中做除法运算时, 能够得到小数。下面是关于算数运算符的示例:

 

2 一元运算符

所谓一元运算符,就是指只作用于一个操作数的运算符。常见的一元运算符有两种,赋值运算符 和递增递减运算符。

  1. 赋值运算符

关于赋值运算符,前面我们已经见到过了。最常见的就是=,代表将右边的内容赋值给左边。除 此之外,还有+=、-=、*=等一系列赋值运算符,具体的示例如下:

let a = 5;

a += 5;

console.log(a); // 10

a -= 3;

console.log(a); // 7

a *= 5;

console.log(a); // 35

a /= 5;

console.log(a); // 7

a %= 2;

console.log(a); // 1

2.递增和递减

除了上面所介绍的赋值运算符以外,常见的一元运算符还有递增和递减。在递增递减中,主要需 要注意前置和后置的区别。如果是前置,那么是先自增或自减,然后参与运算。如果是后置,则 是先参与运算,然后再自增或者自减,示例如下:

前置示例:

let a = 2;

let b = 10;

let c = 一a + b;

let d = a + b;

console.log(a,b,c,d);//1 10 11 11

后置示例:

let a = 2;

let b = 10;

let c = a一 + b;

let d = a + b;

console.log(a,b,c,d);//1 10 12 11

需要注意的是,我们的自增自减操作符不仅仅局限于数值,其他类型也可以,遵循下面的规则:

・在应用于一个包含有效数字字符的字符串时,现将其转换为数字值,再执行加减1操作。字 符串变量变为了数值变量。

-在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN,字符串变量变成数 值变量。

-遇布尔值false时,先将其转换为0再执行加减1操作,布尔值变量变成数值变量。

-遇布尔值true时,先将其转换为1再执行加减1操作,布尔值变量变成数值变量。

・在应用浮点数数值时,执行加减1操作。

示例:

let si = "123";

let s2 = "123Hello";

let s3 = "Hello";

let s4 = true;

let s5 = 3.14;

console.log(一s1);//122 console.log(一s2);//NaN console.log(一s3);//NaN console.log(一s4);//0 console.log(一s5);//2.14

 

3比较运算符

 

1.关系运算符

小于,大于,小于等于,大于等于

  1. 相等和不相等

==表示相等,!=表示不相等,数据类型不同的数据进行相等比较的话会自动转换数据类型, 还有一些其他的转换规则如下:

• null和undefined是相等的

•如果有一^操作数是NaN,则返回false, NaN和NaN比较也是false

-如果是数字的字符串和数字进行比较,会先将字符串转换为数字

•布尔值里面true转换为1, false转换为0

  1. 全等和不全等

全等是===,不全等是!==这个就是必须数据类型和数值都相等

4逻辑运算符

  1. 非!

所谓非,就是取反,非真即假,非假即真

  1. 与&&

作用于两到多个值,并且只有所有的操作数都是真值时,才为true

3.或‖

同样是作用于两到多个值,但是只要有一个操作数为真,就返回真

6运算符优先级

JavaScript中的运算符优先级是一套规则。该规则在计算表达式时控制运算符执行的顺序。具有 较高优先级的运算符先于较低优先级的运算符执行。

例如,乘法的执行先于加法。

下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺 序求值。

运算符描述

.[]()

字段访问,数组下标,函数调用以及表达 式分组

++ 一 - ~ ! delete new

void

typeof —元运算符,返回类型,对象创建,未定

义值

* / %

乘法,除法,取模

+ - +

加法,减法,字符串拼接

<< >> >>>

移位

< <=> >=instanceof

小于,小于等于,大于,大于等于,instan

ceof

== 1= === |==

等于,不等于,全等,不全等

&

按位与

|

按位异或

按位或

&&

逻辑与

||

逻辑或

?:

三目运算符

=

赋值

多重赋值

  1. 拥有良好注释的代码是专业程序员的标志。如果没有注释,往往在几周后自己也很难明白自 己写的代码的含义。
  2. 在JavaScript中,每一条代码以分号结束。
    1. 标识符就是我们自己给变量。函数或者对象起的一个名字。定义标识符时需要遵循一定的硬 性要求和软性要求。
    2. 常见的命名法则有匈牙利命名法,驼峰命名法和蛇形命名法。
    3. 在JavaScript中存在一组关键字和保留字,不能用作自定义标识符。
    4. 在JavaScript中数据类型整体上可以分为简单数据类型和复杂数据类型。
    5. 使用typeof运算符可以查看一个数据的数据类型。
    6. 在JavaScript中声明变量可以使用let, const和var关键字来进行声明。
    7. 简单值和复杂值在访问方式,比较方式以及内存中存储空间的区别。
    8. 使用var关键字声明变量存在一些特殊的特性,例如重复声明以及遗漏声明
    9. 所谓作用域就是指变量在程序中能够被访问到的区域。常见的有全局作用域和局部作用域。
      1. JavaScript中存在6种基本数据类型,分别为undefined, null, boolean, number, string和 symbol o
      2. 每种数据类型都有其对应的属性和方法。掌握这些属性和方法可以让我们在编写代码时事半 功倍。
      3. 不同的数据类型之间可以相互进行转换,其中分为隐性转换和强制转换
        1. JavaScript中有众多的运算符,例如最常用的算数运算符,还有比较运算符,逻辑运算符, 和位运算符等。不同的运算符之间有一套优先级关系。

第3章流程控制语句

所谓流程控制,主要就是用于控制整个程序的走向的。默认情况下,程序是从上往下,逐条执行,这种情况我们将其称之为顺序结构。但是并不是所有的程序都是使用顺序结构就能够完成的。在我们书写程序时往往还需要对整个程序进行分之,或者对某段代码进行重复执行。

条件语句 

 

单分支语句 :由一个if组成,如果条件成立,则进入代码块开始执行语句,如果条件不是一个布尔值,那么会被自动转换为布尔值

If(条件){

输出代码;

}

多分支语句 :有两个分支线,如果i条件不成立,那么就会跳入到else语句里面,

if(条件){

执行代码

}

Else{

执行代码

}

三目运算符:if...else语句的一个缩写方式,就是使用三目运算符

条件?(条件为真是执行的代码):(条件为假的时候执行的代码)

逻辑决策树

If(条件){

执行语句

}

Else if(条件){

执行语句

}

Else if(条件){

执行语句

}

Switch语句

Switch(条件){

Case 1:执行语句;

Break;

Case 2:执行语句;

Break;

Case 3:执行语句;

Break;

Case 4:执行语句;

Break;

}

转载于:https://www.cnblogs.com/RAINBOW1357/p/11400675.html

Javascript编程基础1相关推荐

  1. JavaScript编程基础(一)

    JavaScript 编程基础 JavaScript 是Web上的一种功能强大的编程语言,用于开发交互式的Web页面.它不需要编译,而是直接嵌入在HTML页面中,把静态页面转变成支持用户交互并响应事件 ...

  2. 实验一 HTML编程基础和Javascript编程基础

    一.实验目的 1.体会HTML编程: 2.掌握HTML基本元素 3.掌握Javascript函数的定义和使用方法 二.实验内容 1) 做一个表格,3行,4列,内容不限,表格格式要求 •网页标题栏有显示 ...

  3. 《JavaScript编程实战》

    <JavaScript编程实战> 基本信息 原书名:JavaScript programming: pushing the limits 作者: (美)Jon Raasch 译者: 吴海星 ...

  4. JavaScript 设计模式基础(二)

    JavaScript 设计模式基础(一) 原型模式 在以类为中心的面向对象编程语言中,类和对象的关系就像铸模和铸件的关系,对象总是从类中创建.而原型编程中,类不是必须的,对象未必从类中创建而来,可以拷 ...

  5. python编程基础与应用-Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  6. JavaScript 编程精解 中文第三版 十一、异步编程

    十一.异步编程 原文:Asynchronous Programming 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 孰能浊以澄?静之徐清: 孰能安以久?动之徐生. 老子,&l ...

  7. 16第一章 ASP.Net编程基础知识

    第一章        ASP.Net编程基础知识 第一章        ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...

  8. JavaScript编程知识

    JavaScript编程知识 1.从阵列中删除重复项 数组:这是一些方便的方法,可用于从数组中删除重复项. 1.使用lodash let array = [2, 1, 2, 5, 6, 7, 8, 9 ...

  9. 计算机科学与编程基础,国外经典教材·计算机科学与技术:Oracle 10g编程基础

    作为Oracle编程基础教材,<国外经典教材·计算机科学与技术:Oracle10g编程基础>力求言简意赅,重点突出.全书共分三部分:第Ⅰ部分引导读者对关系模型的基础知识进行回顾,并介绍Or ...

最新文章

  1. lightgbm保存模型参数
  2. 2018年技术展望--中文版
  3. R语言操作excel文件的数据
  4. 一天1个机器学习知识点(二)
  5. 普林斯顿大学英伟达Facebook提出基于深度神经网络的全动态推理,助力轻量级网络!...
  6. Spring之AOP详解
  7. 第四十三篇 面向对象进阶2
  8. [转]C#中的多线程进度条使用
  9. python语言标识符命名规则_Python标识符
  10. 手机屏幕怎么计算机,怎样把手机屏幕投到电脑
  11. 机器学习 | 泰坦尼克号数据集
  12. 智慧城市综合管控平台
  13. Qt学习:常用数学函数
  14. Causal Representation Learning for Out-of-Distribution Recommendation
  15. 2018-11-5-win10-uwp-异步转同步
  16. 人民币升值破七 香港物价上涨发工资改用人民币
  17. 如何治理 Electron 版本淘宝直播应用崩溃?
  18. 如何设置计算机自动连接宽带,宽带自动连接设置,教您电脑怎么设置宽带自动连接...
  19. Numpy 简单教程(二)数组的形状(shape)操作
  20. 投影坐标系的shp数据,如何获取到它地理坐标系下的经纬度坐标

热门文章

  1. centos下部署NTP时间服务器同步环境记录
  2. I2C从驱动到应用(中篇)
  3. tomcat的部署及session绑定反代
  4. Linux下搭建SVN+版本冲突
  5. CentOS 升级PHP
  6. [转载]VC6下安装STLport-5.2.1
  7. 点分十进制IP转换为十进制数以及逆变换,JavaScript
  8. hive 在kettle 作业return code 2 的问题 Unexpected exception: Unexpected exception: Unexpected exception:
  9. Exchange Server 2019新功能预览-揭秘被削减的功能
  10. 文件系统磁盘管理(七)--RAID