//严格模式
“use strict”
//1.变量a
a;
console.log(a)
2.2、let关键字
let 跟 var 的作用差不多,但有着非常重要的区别。最明显的区别是,let 声明的范围是块作用域, 而 var 声明的范围是函数作用域。
下面演示区别:
使用let修饰的变量age不能被if块外部访问,因为它的作用域仅限于内部。块作用域属于函数作用域的子集,因此适用于var的作用域限制同样也适用于let。
简单来说就是:
自上向下,可兼容,自下向上不可能。
<script>
if (true){
var name = "张三";
document.write(name) //张三
}
document.write(name) //张三
if (true){
//let修饰
let age = 20;
document.write(age) //20
}
document.write(age) //没有访问到age
</script>
2.3、const关键字
const 的行为与 let 基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改const 声明的变量会导致运行时
错误。
<script>
const age = 26;
age = 36; //TypeError
//不允许重复声明
const name = "s";
const name = "zhangsan"; // Identifier 'name' has already been declared
//const作用域也是块
if (true){
const a = 10;
}
console.log(a) //无法访问到变量a并抛出异常
</script>
ECMA中的数据类型有6种,分别为:
-
undefined : 值未定义的
-
Null : 表示空
-
Boolean : 布尔值,true false
-
Number : 数值
-
String : 字符串
-
Symbol : 值是符号
注意:
undefined
即使未初始化的变量会被自动赋予 undefined 值,但我们仍然建议在声明变量的 同时进行初始化。这样,当 typeof 返回"undefined"时,你就会知道那是因为给定的变 量尚未声明,而不是声明了但未初始化。
数值转换:
3 个函数可以将非数值转换为数值:
Number()、parseInt()和 parseFloat()。
后两个函数主要用于将字符串转换为数值。
- Number()函数基于如下规则转换:
- 布尔值 ture == 1 false == 2
- null 返回 0
- undifined 返回 NaN
- 字符串的规则较多:
* 如果字符串包含数值字符 包括数组前面带-号的情况,则 转换为十进制数字
* 如果是空字符串 则返回 0
* 如果字符串包含浮点数值 则会转换为响应的浮点数
* 如果字符串是一个十六进制的格式 就会转换为十进制整数值
* 如果上述情况都不存在 则返回NaN
var flag = true //true == 1 false == 2
document.write(Number(flag))
var num = 10; //数值直接返回
document.write(Number(num) + "</br>")
var age; //undefined 返回 NaN
document.write(Number(age)) //返回NaN
<script>
//1.使用typeof 检查数据类型
var a = "张三";
document.write(typeof(a)) //string
document.write(typeof 30) //number
//2.演示undefined
let b;
document.write(b + "</br>")
//未声明变量的时候也会检测出undefined
document.write(typeof num1)
//3.Null 表示空对象指针
var car = null;
document.write(typeof car) //返回的是一个对象object
//4.Boolean
var flag = true
//5.Number -- 有趣的数据类型
var num1 = 10; //整数
var num2 = 0xA; //十六进制10
/*
存储浮点值使用的内存空间是存储整数值的两倍,
所以 ECMAScript 总是想方设法把值转换为整数。
*/
var num3 = 1.1; //浮点值
var num4 = .1; //有效 但不推荐
/*
值的范围:
内存是有限制的,ECMAScript 可以表示的最小数值保存在 Number.MIN_VALUE
最大数值 Number.MAX_VALUE
*/
var result = Number.MIN_VALUE + Number.MAX_VALUE
document.write(result) //1.7976931348623157e+308
//NaN not a number 不是一个数字
document.write(0/0) //如果分子或分母为0 就会返回NAN
//String 字符串
var name2 = "法外狂徒张三";
</script>
3.1、深入字符串
字符串的特点:
不可变的,一旦创建,它们的值就无法改变。要修改的话,必须销毁原来的字符串。
字符出的转换:
有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的 toString()方法。这个方法唯 一的用途就是返回当前值的字符串等价物。比如:
<script>
var age = 20;
var newString = age.toString(); //字符串20
document.write(typeof(newString))
//除了null 和 undefined没有tostring方法其他数据类型都有
</script>
字符串的字面量
| 字面量 | 含义 |
| — | — |
| \n | 换行 |
| \t | 制表符 |
| \b | 退格 |
| \r | 回车 |
| \f | 换页 |
| \\ | \ 反斜杠 |
| ’ | 单引号 |
3.2、Symbol 类型(了解即可)
Symbol(符号)是 ECMAScript 6 新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。
符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。
尽管听起来跟私有属性有点类似,但符号并不是为了提供私有属性的行为才增加的(尤其是因为 Object API 提供了方法,可以更方便地发现符号属性)。
相反,符号就是用来创建唯一记号,进而用作非 字符串形式的对象属性。
3.3、Object类型
在后续的对象会有更深的讲解,在这里介绍对象的基本用法,以及定义格式
<script>
//创建一个对象
var student = Object();
//如果没有参数的话 可以胜率括号
var student = Object;
</script>
每个Object实例都有如下属性和方法:
-
constructor:用于创建当前对象的函数。在前面的例子中,这个属性的值就是 Object() 函数
-
hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属 性。要检查的属性名必须是字符串(如 o.hasOwnProperty(“name”))或符号。
-
isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型。(后续将详细介绍 原型。)
-
propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用(本章稍后讨 论的)for-in 语句枚举。与 hasOwnProperty()一样,属性名必须是字符串。
-
toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。
-
toString():返回对象的字符串表示。
-
valueOf():返回对象对应的字符串、数值或布尔值表示。通常与 toString()的返回值相同。 因为在 ECMAScript 中 Object 是所有对象的基类,所以任何对象都有这些属性和方法。在接下来我们将介绍对象间的继承机制。
1.算数运算符
算数运算符用于对数字执行算数运算:
| 运算符 | 描述 |
| — | — |
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| / | 除法 |
| % | 取模(余数) |
| ++ | 递加 |
| – | 递减 |
<script>
//加法运算
var a = 10;
var b = 5;
var result = a + b; //相加 -- 15
alert(result)
</script>
减法
<script>
//减法操作
var a = 10;
var b = 5;
var result = a - b; //相减 -- 5
</script>
乘法
<script>
//乘法操作
var a = 10;
var b = 5;
var result = a * b; //相乘 -- 50
</script>
除法
<script>
//除法操作
var a = 10;
var b = 5;
var result = a / b; //2
</script>
取余
<script>
//取余操作
var a = 10;
var b = 5;
var result = a % b; // 10 除以 5 == 商为2 余数为0 所以输出0
alert(result)
</script>
介绍完了算术运算的常用操作,在这介绍一下优先级。
在小学我们就知道加减乘除的优先级关系了 :
先乘除,后加减
括号括起来的优先级是最高的
2.赋值运算符
| 运算符 | 例子 | 等同于 |
| — | — | — |
| = | x = y | x = y |
| += | x += y | x = x + y |
| -= | x -= y | x = x - y |
| *= | x *= y | x = x * y |
| /= | x /= y | x = x / y |
| %= | x %= y | x = x % y |
| <<= | x <<= y | x = x << y |
| >>= | x >>= y | x = x >> y |
| >>>= | x >>>= y | x = x >>> y |
| &= | x &= y | x = x & y |
| ^= | x ^= y | x = x ^ y |
| |= | x |= y | x = x | y |
| **= | x **= y | x = x ** y |
这里就不一一演示了,大家可以亲自去测试。
ECMA-262 描述了一些语句(也称为流控制语句),而 ECMAScript 中的大部分语法都体现在语句中。
我们首先来看 ECMA 是什么。ECMA,读音类似“埃科妈”,是欧洲计算机制造商协会(European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。
后面的-xxx数字 代表的就是ECMAScript采用的标准
1.if语句
条件判断语句,在我们的代码中会多次频繁的出现,现在就来介绍它们的语法以及基本使用。
定义格式:if (条件){
返回true 执行的代码块
}else{
返回false 执行的代码块
}
<script>
var a = 10;
var b = 20;
if (a > b){
document.write("确实大于B")
}else{
document.write("a 怎么能大于 B ?")
}
</script>
2.do-while
这是一种后测试语句,也就是说循环体中的代码执行完之后才会进行判断求值。
下述这个例子 只要a < 10 就会一直循环。 a从0开始 每次递增2
<script>
var a = 0
do {
a += 2
}while (a < 10);
</script>
3.while
有后测试语句,就有先测试语句,while就是先测试语句
<script>
var a = 0;
while (a < 10){
a += 2;
}
//每次循环递增2 只要a不小于10了 循环就结束了
</script>
4.for
for 语句也是先测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行的表达式。
与Java中的for循环写法几乎保持一致。
<script>
for (var i = 0; i < 10; i++){
document.write(i + "</br>")
}
</script>
5.for-in
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识
一线互联网P7面试集锦+各种大厂面试集锦
学习笔记以及面试真题解析
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
**
[外链图片转存中…(img-tXjfNxzh-1712679076551)]
[外链图片转存中…(img-Hu2nAvHO-1712679076552)]
[外链图片转存中…(img-tlui0XtK-1712679076552)]
[外链图片转存中…(img-YneoKPJY-1712679076553)]
[外链图片转存中…(img-GLrsCTv6-1712679076553)]
[外链图片转存中…(img-CO0JXv3l-1712679076553)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-34nxmX35-1712679076554)]
线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识
[外链图片转存中…(img-SccL0l2y-1712679076554)]
一线互联网P7面试集锦+各种大厂面试集锦
[外链图片转存中…(img-SjnfPrug-1712679076554)]
学习笔记以及面试真题解析
[外链图片转存中…(img-9opk8bdT-1712679076555)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-V3eIiohQ-1712679076555)]