Javascript编程基础1
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 一元运算符
所谓一元运算符,就是指只作用于一个操作数的运算符。常见的一元运算符有两种,赋值运算符 和递增递减运算符。
- 赋值运算符
关于赋值运算符,前面我们已经见到过了。最常见的就是=,代表将右边的内容赋值给左边。除 此之外,还有+=、-=、*=等一系列赋值运算符,具体的示例如下:
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.关系运算符
小于,大于,小于等于,大于等于
- 相等和不相等
==表示相等,!=表示不相等,数据类型不同的数据进行相等比较的话会自动转换数据类型, 还有一些其他的转换规则如下:
• null和undefined是相等的
•如果有一^操作数是NaN,则返回false, NaN和NaN比较也是false
-如果是数字的字符串和数字进行比较,会先将字符串转换为数字
•布尔值里面true转换为1, false转换为0
- 全等和不全等
全等是===,不全等是!==这个就是必须数据类型和数值都相等
4逻辑运算符
- 非!
所谓非,就是取反,非真即假,非假即真
- 与&&
作用于两到多个值,并且只有所有的操作数都是真值时,才为true
3.或‖
同样是作用于两到多个值,但是只要有一个操作数为真,就返回真
6运算符优先级
JavaScript中的运算符优先级是一套规则。该规则在计算表达式时控制运算符执行的顺序。具有 较高优先级的运算符先于较低优先级的运算符执行。
例如,乘法的执行先于加法。
下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺 序求值。
运算符描述
.[]() |
字段访问,数组下标,函数调用以及表达 式分组 |
++ 一 - ~ ! delete new void |
typeof —元运算符,返回类型,对象创建,未定 义值 |
* / % |
乘法,除法,取模 |
+ - + |
加法,减法,字符串拼接 |
<< >> >>> |
移位 |
< <=> >=instanceof |
小于,小于等于,大于,大于等于,instan ceof |
== 1= === |== |
等于,不等于,全等,不全等 |
& |
按位与 |
| |
按位异或 按位或 |
&& |
逻辑与 |
|| |
逻辑或 |
?: |
三目运算符 |
= |
赋值 |
多重赋值 |
- 拥有良好注释的代码是专业程序员的标志。如果没有注释,往往在几周后自己也很难明白自 己写的代码的含义。
- 在JavaScript中,每一条代码以分号结束。
- 标识符就是我们自己给变量。函数或者对象起的一个名字。定义标识符时需要遵循一定的硬 性要求和软性要求。
- 常见的命名法则有匈牙利命名法,驼峰命名法和蛇形命名法。
- 在JavaScript中存在一组关键字和保留字,不能用作自定义标识符。
- 在JavaScript中数据类型整体上可以分为简单数据类型和复杂数据类型。
- 使用typeof运算符可以查看一个数据的数据类型。
- 在JavaScript中声明变量可以使用let, const和var关键字来进行声明。
- 简单值和复杂值在访问方式,比较方式以及内存中存储空间的区别。
- 使用var关键字声明变量存在一些特殊的特性,例如重复声明以及遗漏声明
- 所谓作用域就是指变量在程序中能够被访问到的区域。常见的有全局作用域和局部作用域。
- JavaScript中存在6种基本数据类型,分别为undefined, null, boolean, number, string和 symbol o
- 每种数据类型都有其对应的属性和方法。掌握这些属性和方法可以让我们在编写代码时事半 功倍。
- 不同的数据类型之间可以相互进行转换,其中分为隐性转换和强制转换
- 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相关推荐
- JavaScript编程基础(一)
JavaScript 编程基础 JavaScript 是Web上的一种功能强大的编程语言,用于开发交互式的Web页面.它不需要编译,而是直接嵌入在HTML页面中,把静态页面转变成支持用户交互并响应事件 ...
- 实验一 HTML编程基础和Javascript编程基础
一.实验目的 1.体会HTML编程: 2.掌握HTML基本元素 3.掌握Javascript函数的定义和使用方法 二.实验内容 1) 做一个表格,3行,4列,内容不限,表格格式要求 •网页标题栏有显示 ...
- 《JavaScript编程实战》
<JavaScript编程实战> 基本信息 原书名:JavaScript programming: pushing the limits 作者: (美)Jon Raasch 译者: 吴海星 ...
- JavaScript 设计模式基础(二)
JavaScript 设计模式基础(一) 原型模式 在以类为中心的面向对象编程语言中,类和对象的关系就像铸模和铸件的关系,对象总是从类中创建.而原型编程中,类不是必须的,对象未必从类中创建而来,可以拷 ...
- python编程基础与应用-Python程序设计基础与应用
图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...
- JavaScript 编程精解 中文第三版 十一、异步编程
十一.异步编程 原文:Asynchronous Programming 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 孰能浊以澄?静之徐清: 孰能安以久?动之徐生. 老子,&l ...
- 16第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识 第一章 ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...
- JavaScript编程知识
JavaScript编程知识 1.从阵列中删除重复项 数组:这是一些方便的方法,可用于从数组中删除重复项. 1.使用lodash let array = [2, 1, 2, 5, 6, 7, 8, 9 ...
- 计算机科学与编程基础,国外经典教材·计算机科学与技术:Oracle 10g编程基础
作为Oracle编程基础教材,<国外经典教材·计算机科学与技术:Oracle10g编程基础>力求言简意赅,重点突出.全书共分三部分:第Ⅰ部分引导读者对关系模型的基础知识进行回顾,并介绍Or ...
最新文章
- lightgbm保存模型参数
- 2018年技术展望--中文版
- R语言操作excel文件的数据
- 一天1个机器学习知识点(二)
- 普林斯顿大学英伟达Facebook提出基于深度神经网络的全动态推理,助力轻量级网络!...
- Spring之AOP详解
- 第四十三篇 面向对象进阶2
- [转]C#中的多线程进度条使用
- python语言标识符命名规则_Python标识符
- 手机屏幕怎么计算机,怎样把手机屏幕投到电脑
- 机器学习 | 泰坦尼克号数据集
- 智慧城市综合管控平台
- Qt学习:常用数学函数
- Causal Representation Learning for Out-of-Distribution Recommendation
- 2018-11-5-win10-uwp-异步转同步
- 人民币升值破七 香港物价上涨发工资改用人民币
- 如何治理 Electron 版本淘宝直播应用崩溃?
- 如何设置计算机自动连接宽带,宽带自动连接设置,教您电脑怎么设置宽带自动连接...
- Numpy 简单教程(二)数组的形状(shape)操作
- 投影坐标系的shp数据,如何获取到它地理坐标系下的经纬度坐标
热门文章
- centos下部署NTP时间服务器同步环境记录
- I2C从驱动到应用(中篇)
- tomcat的部署及session绑定反代
- Linux下搭建SVN+版本冲突
- CentOS 升级PHP
- [转载]VC6下安装STLport-5.2.1
- 点分十进制IP转换为十进制数以及逆变换,JavaScript
- hive 在kettle 作业return code 2 的问题 Unexpected exception: Unexpected exception: Unexpected exception:
- Exchange Server 2019新功能预览-揭秘被削减的功能
- 文件系统磁盘管理(七)--RAID