js基础(一)

JavaScript起源:

借鉴java的管理机制,c的函数,最开始交Mocha,后改为LiveScript,当时java特别火,和sun公司合作以后改名为JavaScript。(与java毫无关系

ECMA:欧洲计算机制造商协会

  • ECMAScript1.0 :制定了js语法标准。
  • ECMAScript10 :最新版本
  • ECMAScript5.0、ECMAScript6.0 常用版本

JavaScript简介

JavaScript是基于对象和事件驱动的解释性脚本语言

  • 基于对象:js是一种基于对象的语言,这意味着它能运用自己已经创建的对象。
  • 事件驱动:JavaScript可以直接对用户或者克服输入作出响应,无需经过web服务器,它对用户的响应,以事件驱动的方式进行。
  • 解释性:浏览器可以直接识别和解析js代码。

编译性:C、C++(高级语法),计算机只能识别机器语言(0、1)
              编译成能够识别的二进制代码。
解释性:JavaScript、php,可以直接被浏览器识别执行,一行一行执行

JavaScript兼容性好,可以跨平台。

JavaScript的组成:

  1. ECMAScript:指定JavaScript语法标准。
  2. DOM:Document Object Model 文档对象模型
  3. BOM:Browser Object Model 浏览器对象模型

JavaScript与ECMAScript的关系?
        ECMAScript是JavaScript的语法标准。
        JavaScript是ECMAScript的具体体现。

js的编写位置:

  • 标签的属性中(不推荐)

    • 可以将js代码编写到标签的onclick属性中。当我们点击按钮时,才会执行!
    • 可以将js代码写在超链接的href属性中,点击超链接时,会执行js代码
      script标签中。
  • 编写到外部js文件中,然后引入。(推荐)
    写到外部文件中可以在不同的页面中引用,也可以利用浏览器的缓存机制。

所有的js代码都要写在< script>标签中。

可以引入多个script标签。他们之间顺序执行。

JavaScript三种引入方式:
  • 行内引入:在html开始标签中引入:<div onclick = "alert('点击了')"> </div>
  • 内部引入:在script标签中写js代码:<script>alert(1)</script>
  • 外部引入(常用):通过script标签的src属性引入js文件到html中:<script src = 'index.js'></script>

【注】如果当前script标签作用引入外部文件,那么这个script标签中,就不能在写代码了。可以创建新的script标签来写外部代码。

如果想要输出文本内容为,不能直接写 document.write("");正确写法:

  • &lt 代替“<”
  • &gt 代替“>”
注释快捷键 :

单行注释 Ctrl+/
多行注释Ctrl+shift+/

小栗子:

<script>
        alert("hello world"); //在页面弹出警告框
        document.write("hello world!!");  //在当前文本进行输出
        document.write("&lt/script&gt");
        console.log("hello");  //向控制台输出
    </script>

js基本语法

  • js严格区分大小写
  • js中每条语句以分号结尾
  • js会自动忽略多个空格和换行

概念:

  • 字面量,一些不可改变的值,都可以直接使用(一般不会直接使用,比较麻烦)2r7325291ur

  • 变量,可以保存字面量,值可以任意改变(常用) x = 2r7325291ur 在js中使用var关键字声明变量。 var a =
    10000;

  • 标识符,在js中可以由我们自主命名的都可以称为标识符。(如变量名、函数名、属性名)。

    1. 命名规则:可以含有字母、数字、下划线、$。
    2. 不能以数字开头。
    3. 不能是js中的关键字或者保留字。
    4. 采用驼峰命名 如:helloWorld。
    5. js底层保存标识符时采用Unicode编码。

关键字和保留字

在这里插入图片描述

块作用域

块: {}
let:
使用 let 关键词声明拥有块作用域的变量。

  • 在块内声明的变量无法从块外访问
  • let不允许多次声明同一个变量
{
    let x = 6;  //把6赋值给x
}
例如在循环中使用let:


<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
let i = 5;
for (let i = 0; i < 10; i++) {
document.write(i+" ");
  // 输出为0 1 2 3 4 5 6 7 8 9
}
document.getElementById("demo").innerHTML = i;
// 输出为 5,因为在循环中用 let 声明了变量 i,那么只有在循环内,变量 i 才是可见的
</script>

</body>
</html>

数据类型

6种数据类型:

  • String 字符串
  • Number 数值
  • Boolean 布尔值
  • Null 空
  • Undefined 未定义
    以上是基本数据类型。
  • Object 对象
  • function 函数
  • array 数组
    这是引用数据类型。
    == 注意:与java不同的是,js是弱数据类型,即到底是什么数据类型赋值后才知道==
下面介绍一下这些数据类型:

一、String:

  • 使用字符串必须用引号引起来。
  • 单引号双引号都可。
  • 双引号里可以放单引号,但是同类型不能嵌套。
  • 在字符串中,可以使用 \ 作为转义字符,当输出一些特殊符号需要转义时使用。
    在这里插入图片描述
    模板字符串:
  • 用于拼接字符串和变量。
  • 内容拼接变量时,用 ${} 包住变量。
let nAme = "崔皓月"
document.write(`大家好,我叫${nAme}`)

二、Number:

  • 整数和小数都可以使用。
  • 可以使用运算符typeof来检测变量类型。
  • 语法:typeof 变量
  • 例如:
var a = 123;
var b = "123";
console.log(typeof a);

结果如下:
在这里插入图片描述

  • 表示数字的最值:
  • 最大值:Number.MAX_VALUE,如果超过了这个最大值,返回Infinity(正无穷,也是字面量)。
  • 最小值:Number.MIN_VALUE,大于0的最小值。
  • NaN 是一个特殊的数字,表示Not A Number。
  • js中整数的运算基本可以保证精确。
  • 如果使用js进行浮点数运算,可能不精确。

三、Boolean:

  • 只有两个值:true、flase,主要做逻辑判断。

四、Null:

  • 只有一个值:null,专门用来表示为空的对象。

五、Undefined:

  • 只有一个值:undefined:当声明变量,但是不给变量赋值时,他就是undefined。

强制类型转换

隐式转换:

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。

  • +号两边只要有一个是字符串,都会把另外一个转成字符串。

  • 除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型。

显示转换

一、其他类型转换为String:
  1. 调用被转换类型的toStirng()方法。
var c = 12345;
c = c.toString();
console.log(typeof c);
  1. 调用String()函数,并将被转换的数据作为参数传递给函数。
var a = 123;
a = String(a);
console.log(typeof a);
  • 对于Number和Boolean,实际上就是调用的toString()方法。
  • 对于Null和Undefined,直接转换。
二、将其他类型转化为Number:
  1. 使用Number()函数

字符串—>数字

  • 如果是纯数字的字符串,则直接转换。
  • 如果含有非数字内容,则转换NaN。
  • 如果是空串或者是一个全是空格的串,则转换为0。

布尔—>数字

  • true转成1
  • false转成0

null—>数字

  • 0

Undefined—>数字

  • NaN
  1. 这种方式专门用来对付字符串。
  • parseInt()把一个字符串转换为一个整数。(把一个字符串中的有效整数取出来然后转化为Number。)

  • parseFloat()把一个字符串转换成浮点型。(把一个字符串中的有效浮点数取出来然后转化为Number。)

    ps.如果对非String使用,它会先将其转化为String然后操作。
    
三、转化为其他进制

在js中,如果需要表示16进制数字,需要以0x开头。
如果需要表示8进制数字,则以0开头。
徐耀表示2进制数字,则以0b开头。

对于字符串,可以再parseInt中传递一个第二个参数值,来指定数字的进制。

a = "070"; parseInt(a,10);

四、将其他类型转化为Boolean
  1. 使用Boolean()函数。
  • 数字—>布尔
    • 除了0和NaN,其余都是true。
  • 字符串—>布尔
    • 除了空串,其余全是true。
  • null—>布尔
    • false
  • undefined—>布尔
    • false
  • 对象—>布尔
    • true
  1. 隐式类型转换。
  • 可以为一个任意数据取两次反,来将其转化为布尔值。
    如:
var a = "hello";  
a = !!a;//true

运算符

运算符也叫操作符,可以对一个或多个值进行运算。

  • typeof就是运算符,可以来获得一个值的类型,并将该值的类型以字符串形式返回

算术运算符:

(对非Number类型的值进行运算是,会将这些值转换为Number,然后再运算。 true = 1;false = 0;null = 0;NaN = NaN )

  1. +:
    • 可以对两个值进行加法运算,并将结果返回。
    • 任何数与NaN相加,都是NaN。
    • 两个字符串相加,拼接起来。
      • 由于双引号是不能换行的,当写一些比较长的字符串时,可以用加号进行拼串。
    • 任何值和字符串做加法,都会转化为字符串,然后拼接。
      • 我们可以利用这一特点,将任意一个字符串转化为String。只需要为任意的数据类型 + “”(空串)。实际上它也是调用String()函数。
        如:
var c = 123;
c = c+"";
console.log(c);
console.log(typeof c);
  1. -:
    • 可以对两个值进行减法运算。
    • 与字符串操作,把字符串转化为Number。
  2. *:
    • 可以对两个值进行乘法运算。
    • 与字符串操作,把字符串转化为Number。
  3. /:
    • 可以对两个值进行除法运算。
    • 与字符串操作,把字符串转化为Number。
  • 任何值做- * /时都会自动转为Number,我们可以利用这一特点做隐式类型转换。
  1. %:
    • 取模运算(取余数)
  • 一元运算符只需要一个操作数。
    1. +:正号(不会对数字产生影响)
    2. -:负号(可以对数字进行符号取反)
    3. 对于非Number值,它会将其先转化为Number再计算。
    4. 可以对一个其他任意数据类型使用+,将其转化为Number。
  • 赋值运算符
    =:可以将符号右侧的值赋值给符号左侧的值。
    • +=
    • -=
    • *-
    • /=
    • %=

自增自减

  • 自增:(++)

    1. 可以使变量在自身的基础上+1;
    2. 自增分为两种:后++(i ++),前++(++ i),无论是i++还是++i,都会立即使原变量值增加1。
    3. 不同的是i++和++i的值不同。i++的值等于原变量的值(原值),++i的值等于原变量自增后的值(新值)。
  var c = 10;
        console.log(c++);//此时原值是10。
        c++;
        console.log(c++);//调了两次c++,此时原值是12。

在这里插入图片描述
例子:

var c = 10;
var sum = c++ + ++c + c;
//10 + 12 + 12 = 34
console.log(sum);
  • 自减:(–)

    1. 在自身基础上减一。
    2. 自减分两种,后–和前–。无论是i–还是–i,都会立即使原变量值减1。
    3. 不同的是i–和--i的值不同。i–的值等于原变量的值(原值),–i的值等于原变量自减后的值(新值)。

逻辑运算符

  1. !:非;

    • !可以用来对一个值进行非运算。
    • 所谓非运算就是对一个布尔值进行取反。
    • 进行两次取反不会变化。
    • 如果对非布尔值进行取反,现将其变为布尔值,再进行运算。
    • 可以为一个任意数据取两次反,来将其转化为布尔值,原理和Boolean()一样。
  2. &&:与;

    • 可以对符号两侧的值进行与运算,并返回结果。

    • 如果两个值都是true,返回true。只要有一个false,就返回false。

    • js中的与属于短路的与。第一个值是false,则不会检查第二个值。

    • 对于非布尔值进行与运算时,会先将其转化为布尔值,然后进行计算。注意:返回的是原值。

      • 如果第一个值是true,则直接返回第二个。
      • 如果第一个值是false,则返回第一个。
  3. | |:或;

    • 可以对符号两侧的值进行或运算,并返回结果。

    • 只要有一个true,就返回true。

    • js中的与属于短路的或。第一个值是true,则不会检查第二个值。

    • 对于非布尔值进行或运算时,会先将其转化为布尔值,然后进行计算。注意:返回的是原值。

      • 如果第一个值是true,则直接返回第一个。
      • 如果第一个值是false,则返回第二个。

赋值运算符

符号:=,+=,-=,*=,/=,%=
将等号右侧的值赋给左侧。

数组

语法:
数组用方括号书写: 数组下标从0开始

let 数组名 = [数据1 , 数据2...]

创建一个空数组:

var points = [];

例如

var cars = ["Porsche", "Volvo", "BMW"];
document.write(cars[0]);
//  访问数组中的某一元素 例如Porsche
document.write(cars);
//访问整个数组

数组是一种特殊类型的对象。
数组的属性和方法:

var x = cars.length;   // length 属性返回元素的数量
var y = cars.sort();   // sort() 方法对数组进行排序

遍历数组元素:
1. 使用for循环(⭐)

var fruits, text, fLen, i;
fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {    
    text += "<li>" + fruits[i] + "</li>";
}
  1. 使用array.foreach()函数
function myFunction(value) {  
    text += "<li>" + value + "</li>";
}
var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];
text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";

增加元素:
1. 使用push方法

var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction() {
  fruits.push("Lemon");
  document.getElementById("demo").innerHTML = fruits;
}
  1. 使用fruits[fruits.length] = “值” 方法
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6] = "Lemon";

注意:JavaScript 不支持命名索引的数组。在 JavaScript 中,数组只能使用数字索引
例如:可以array[0] = “apple”,但是不可以 array[“foot”] = “apple”

数组和对象的区别:
1. 数组使用数字索引。
2. 对象使用命名索引。

如果希望元素名为字符串(文本)则应该使用对象。
如果希望元素名为数字则应该使用数组。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且陶陶º

感谢大人投喂~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值