前端开发之JavaScript

一、JavaScript简介

​ Javascript(简称‘JS’),是一门解释型编程语言,主要用于Web、和浏览器中网页中的动态渲染

​ 是一门前端工程师的编程语言,相比于python它的逻辑并不是那么严谨

二、JS基础

语法注释

单行注释
//注释内容 多行注释(与css注释相同)
/*注释内容*/

引入JS的多种方式

1、<head>标签内<script>标签内编写

2、<haed>标签内<script>标签src属性引入外部JS资源

3、<body>标签内最底部通过<script>标签src属性引入外部JS资源(最常用)
网页的加载顺序是由上至下,所以操作标签的JS代码一定要等待标签加载结束后运行

结束符

分号  ;
JavaScript中的语句要以分号(;)为结束符。

编写JS代码的方式

1、浏览器 (零时使用)
打开浏览器,右键检查,在console内部编写 2、pycharm创建JS文件或者HTML文件
适合编写较为复杂的JS代码(便于长久保存)

三、变量与常量

变量

  • 变量的声明:

    • 在JS中声明变量需要用到关键字varlet(let 是ECMA6新语法)
    • JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。
  • 变量名的命名规范:

    • 推荐使用小驼峰
  • var 与 let 区别:

    • var:定义在全局,可在局部名称空间种被修改
    • let: 定义在局部名称空间种不会影响到全局名称空间的变量名
var
var 变量名 = '值'; let
let 变量名 = '值';

常量

​ JS中支持定义常量(定义后无法被修改)

关键字:const
const 常量名 = '值';

四、基本数据类型

查看数据类型的方法:

  • 关键字:typeof
typeof(绑定数据的变量名);

1、数值类型

​ Number(数值类型)

​ 区别于Python,JS中整型和浮点型都叫做:Number

​ NaN也属于数值类型:不是一个数字(Not A Number)

2、字符类型

​ String(字符类型)

​ 定义字符类型可使用单、双引号

​ 模板字符串使用:``

var 变量名 = '值';

var 变量名 = "值";

var 变量名 = `我是第一列
我是第二列
我是第三列`

内置方法

序号 关键字 说明
1 .length 返回长度
2 .trim() 移除空白
3 .trimLeft() 移除左边的空白
4 .trimRight() 移除右边的空白
5 .charAt(n) 返回第n个字符
6 .concat(value, ...) 拼接
7 .indexOf(substring, start) 子序列位置
8 .substring(from, to) 根据索引获取子序列
9 .slice(start, end) 切片
10 .toLowerCase() 小写
11 .toUpperCase() 大写
12 .split(delimiter, limit) 分割
var name = '  kang kang  '
var gender = 'male' 1.name.length // 13 返回字符长度 2.name.trim() // 'kang kang' 去除字符串左右两边空格(区别于Python,JS只能去除空格) 3、name.trimLeft() // 'kang kang ' 去除字符串左边空格 4、name.trimRight() // ' kang kang' 去除字符串右边空格 5、name.charAt(5) // 'g' 类似于Python的索引取值 6、name.concat(gender) // ' kang kang male' 拼接,针对字符的拼接还可以用‘+’号 7、name.indexOf('ng') // 4 根据输入的字符获取字符对应索引的位置 8、name.substring(1,5) //' kan' 类似于Pyhon的切片操作 9、name.slice(1,5) // ' kan' 类似于Pyhon的切片操作 10、name.toUpperCase() // ' KANG KANG ' 将字符串所有英文字母转大写 11、name.toUpperCase() // ' kang kang ' 将字符串所有英文字母转小写 13、name.split(' ') //(6) ['', '', 'kang', 'kang', '', ''] 按指定字符·分割字符串, 第二个参数可控制获取分割后的字符串的个数 /*
string.slice(start, stop)和string.substring(start, stop): 两者的相同点:
如果start等于end,返回空字符串
如果stop参数省略,则取到字符串末
如果某个参数超过string的长度,这个参数会被替换为string的长度 substirng()的特点:
如果 start > stop ,start和stop将被交换
如果参数是负数或者不是数字,将会被0替换 silce()的特点:
如果 start > stop 不会交换两者
如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符)
如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)
*/

3、布尔类型

​ boolean(布尔值)

​ 区别于Python,JS的布尔值首字母不用大写

​ JS布尔值纯小写

var a = true;
var b = false;

(空字符串)、0、null、undefined、NaN都是False

五、特殊数据类型

null和undefined

1、null

  • 表示值是空,一般在需要指定或清空一个变量时才会使用

  • 表示曾经有过,但是现在没有了

  • eg:name= null

2、undefined

  • 表示当声明一个变量但未初始化时,该变量的默认值是undefined
  • 表示一直就没有拥有过
  • 函数无明确的返回值时,返回的值也是undefined

​ null表示变量的值是空(null可以手动清空一个变量的值,使得该变量变为object类型,值为null),undefined则表示只声明了变量,但还没有赋值。

六、引用数据类型

1、对象(Object)

​ JaveScript中所有的事务都是对象:字符串、数值、数组、函数...此外JavaScript允许用户自定义对象

​ JaveScript提供多个内建对象,比如String、Date、Array等

​ 对象是带有属性和方法的特殊数据类型

2、数组(Array)

​ 数组类似于Python中的列表

​ 使用单独的变量名来存储一系列的值

创建数组的方法

let a = [1,2,3,4,5];

常用方法

序号 方法 说明
1 .length 数组的大小
2 .push(ele) 尾部追加元素
3 .pop() 获取尾部的元素
4 .unshift(ele) 头部插入元素
5 .shift() 头部移除元素
6 .slice(start, end) 切片
7 .reverse() 反转
8 .join(seq) 将数组元素连接成字符串
9 .concat(val, ...) 连接数组
10 .sort() 排序
11 .forEach() 将数组的每个元素传递给回调函数
12 .splice() 删除元素,并向数组添加新元素。
13 .map() 返回一个数组元素调用函数处理后的值的新数组
let a = [1,2,3]
let b = ['ABC','DEF'] 1、a.length // 3 返回数组内部数据的数量 2、a.push(4) // 在数组尾部添加值 3、a.pop() // 弹出数值尾部的值 4、a.unshift(1) // 在数值头部插入数值,可一次插入多个 5、a.shift // 移出数组头部数据,一次只能移除一个 6、a.slice(1,3) // 数组切片取值,设置起始和结束位置的索引 7、a.reverse() // 反转元组内数据 8、a.join() // '3,2,1,1,5' 将数组内数据转成字符类型 9、a.concat(b) //(7) [3, 2, 1, 1, 5, 'ABC', 'DEF'] 拼接数组 10、a.sort() // 将数组内数值由小到大排序 11、 var obj = {
'1' : 'abc',
'3' : 100,
'5' : 'hello'
}
var arr = [1, 3, 5];
arr.forEach(function(item){
// console.log(item);
},obj);//返回值: 1 3 5 12、a.splice('a','b','c') //删除数组内现有数据,添加新的数据 13、et array = [1, 2, 3, 4, 5]; let newArray = array.map((item) => {
return item * item;
}) console.log(newArray) // [1, 4, 9, 16, 25]

3、字典(Dictionary)

​ 字典同于Python中的字典

​ 字典是一种以键-值对形式存储数据的数据结构,比如:名字-电话号码,通过名字就能找到对应的电话号码,名字就是键(key),电话号就是值(value);

创建字典的方法

1、方式一: 创建字典的同时直接添加键值对
let 字典名 = {键1:值1,
键2:值2
} 2、方式二: 创建一个空字典,然后再添加键值对
let 字典名 = new Object();

字典的基本用法

let d1 = {name: 'kangkang', age: 18, hobby: 'read'}

1、索引取值
d1.name // 'kangkang'
d1[name] // 'kangkang' 2、添加键值对
d1.键名 = 值
d1[键名] = 值

七、运算符

1、算数运算符

符号 描述
+
-
*
/
% 取余
++ 自增1
-- 自减1
var x=10;

var res1 = x ++;   加号在后面	先赋值后自增

var res2 = ++ x;	加号在前面	 先自增后赋值

2、比较运算符

  • 弱:

    • 不同类型的类型解释器会自动转换为相同类型的数据进行比较
    • ‘1’== 1;// true
  • 强:
    • 不同类型数据不会自动转换类型
    • ‘1’== 1;// false
符号 描述
!= 不等于(弱)
== 等于(弱)
=== 等于(强)
!=== 不等于(强)

3、逻辑运算符

符号 描述
&&
||

八、流程控制

1.单if分支
if (条件){
条件成立执行的代码
}
2.if...else分支
if(条件){
条件成立执行的代码
}else{
条件不成立执行的代码
}
3.if...else if...else分支
if(条件1){
条件1成立执行的代码
}else if(条件2){
条件1不成立条件2执行的代码
}
else{
条件1和2都不成立执行的代码
}
4.如果分支结构中else if很多还可以考虑使用switch语法
switch(条件){
case 条件1:
条件1成立执行的代码;
break; 如果没有break会基于某个case一直执行下去
case 条件2:
条件2成立执行的代码;
break;
case 条件3:
条件3成立执行的代码;
break;
case 条件4:
条件4成立执行的代码;
break;
default:
条件都不满足执行的代码
} """
三元运算
python中: 值1 if 条件 else 值2
JS中: 条件?值1:值2
"""

九、循环结构

1、for循环

for循环
for(起始条件;循环条件;条件处理){
循环体代码
}
for(let i=0;i<10;i++){
console.log(i)
}
let dd = {'name':'jason','age':18}
for(let k in dd){
console.log(k)
}

2、while循环

while循环
while(循环条件){
循环体代码
}

十、函数

1.JS中函数的形参与实参个数可以不对应

传少了就是undefined 传多了不用

2.函数体代码中有一个关键字arguments用来接收所有的实参

3.函数的返回值如果有多个需要自己处理成一个整体

1、普通函数

function 函数名(形参){
// 函数注释
函数体代码
return 返回值
}

2、匿名函数

# 匿名函数
var s1 = function(a, b){
return a + b;
}

3、箭头函数

# 箭头函数
var f = v => v;
var f = function(v){
return v;
} var f = () => 5;
var f = function(){return 5}; var sum = (num1, num2) => num1 + num2;
var sum = function(num1, num2){
return num1 + num2;
}

十一、内置对象

1、时间相关

var d = new Date();
//getDate() 获取日
//getDay () 获取星期
//getMonth () 获取月(0-11)
//getFullYear () 获取完整年份
//getYear () 获取年
//getHours () 获取小时
//getMinutes () 获取分钟
//getSeconds () 获取秒
//getMilliseconds () 获取毫秒
//getTime () 返回累计毫秒数(从1970/1/1午夜)

2、json序列化

let dd = {name: 'jason', age: 18}
JSON.stringify(dd) 序列化
JSON.parse(ss) 反序列化

3、正则

定义正则两种方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/; 1.全局模式的规律
lastIndex
2.test匹配数据不传默认传undefined

前端开发:4、JavaScript简介、变量与常量、数据类型及内置方法、运算符、流程控制、循环结构、内置方法的更多相关文章

  1. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  2. 李洪强iOS开发Swift篇—02_变量和常量

    李洪强iOS开发Swift篇—02_变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3. ...

  3. Mysql 存储过程(变量、定义条件、处理程序、光标、流程控制构造)

    最近由于有同事编写了存储函数,需要进行验证,但是对存储过程一直不是很了解,所以抽时间了解了一下存储过程的基本语法.本篇文章主要包括介绍了存储过程的5个小语法:declare语句的变量.定义条件.处理程 ...

  4. python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)

    11.4 JavaScript 11.41 变量 1.声明变量的语法 // 1. 先声明后定义 var name; // 声明变量时无需指定类型,变量name可以接受任意类型 name= " ...

  5. JavaScript的变量和常量

    1.什么是常量? 常量表示一些固定不变的数据 现实生活中人的性别其实就可以看做是常量, 生下来是男孩一辈子都是男孩, 生下来是女孩一辈子都是女孩 2.JavaScript中常量的分类 2.1整型常量 ...

  6. “1+X”证书Web前端开发等级考试简介

    考试简介 “1+X”证书制度是为了深入贯彻党的十九大精神和全国教育大会精神,教育部会同国家发展改革委.财政部.市场监管总局制定了<关于在院校实施“学历证书+若干职业技能等级证书”制度试点方案&g ...

  7. 前端开发:javascript中的面向对象

    前端开发:面向对象与javascript中的面向对象实现(一) 面向对象理解: 面向对象是一种对现实世界理解和抽象的方法,是一种先进的程序设计理念,是一种比较抽象的,多形态的设计模式.我们可以这么理解 ...

  8. javascript的变量声明、数据类型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. javascript的变量声明和数据类型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. web@前端--html,css,javascript简介、第一个页面(常用标签简介)

    1.什么是标签#1.在HTML中规定标签使用英文的的尖括号即`<`和`>`包起来,如`<html>`.`<head>`.`<body>`都是标签,#2. ...

随机推荐

  1. 使用容器运行的minio配置https(TLS)访问

    使用certgen生成证书 下载地址:https://github.com/minio/certgen/releases/tag/v0.0.2 下载地址:https://files.cnblogs.c ...

  2. Logstash: 启动监控及集中管理

    在本篇文章里,我将详细介绍如果启动Logstash的监控及集中管理. 前提条件 安装好Logstash,设置Elasticsearch及Kibana的安全密码. 如何监控Logstash? 我们安装如 ...

  3. Elasticsearch:设置Elastic账户安全

  4. 在k8s集群中安装traefik,并结合kuboard界面使用

    安装traefik 参考步骤:https://blog.51cto.com/u_13760351/2764008?xiangguantuijian&01 修改好的四个yaml文件下载地址:ht ...

  5. 最长公共前缀(Java)

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...

  6. DevOps|高效能敏捷交付组织:特性团队(FeatureTeam)+Scrum

    这是<研发效能组织能力建设>的第三篇.特性团队和Scrum,这两个定义我们在之前的文章中都详细介绍了.这两个组织模式或者说管理实践,我都用过所以有些时候特别有感触.书本上纯粹的模式很容易理 ...

  7. Typora设置代码块Mac风格三个圆点

    写作不停,美化不止! mac小圆点效果 原本代码块样式就挺....干净的,光秃秃的,太单调了: 是吧很丑,于是自己发挥改成了这样: 好吧还是太单调,也没好看到哪里去,于是隔了两天又重新改,DuangD ...

  8. Ajax的使用(jquery的下载)

    Ajax学习笔记(jquery的下载) JQuery的官网下载 地址:http://jquery.com 右上角的"Download JQuery" 三个可供下载的文件: Prod ...

  9. 如何在IDEA中创建Module、以及怎样在IDEA中删除Module?

    文章目录 1.为何要使用Module? 2.Module的创建 3.如何从硬盘上删除module 1.为何要使用Module? 目前主流的大型项目都是分布式部署的,结构类型这种多Module结构.不同 ...

  10. logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息

    文章目录 1.xml文件的编写 2.实现的效果 2.1 日志保存到磁盘 2.2 控制台输出的效果 放置的位置 1.xml文件的编写 logback-spring.xml <?xml versio ...