[JavaScript你真的以为这么简单吗]JavaScript高级,kafka零拷贝原理

//严格模式

“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>



3、数据类型


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 是所有对象的基类,所以任何对象都有这些属性和方法。在接下来我们将介绍对象间的继承机制。

4.运算符


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 |

这里就不一一演示了,大家可以亲自去测试。

5.语句


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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

一线互联网P7面试集锦+各种大厂面试集锦

学习笔记以及面试真题解析

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

**
[外链图片转存中…(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)]

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值