JS的引入:

1 内部引入

  • 绑定元素事件如onclick=""
  • 绑定锚点如href="JavaScript:void(0)"
  • script标签引入,注意:如果标签放在head里面,不能操作放在body里面的scrip标签的内容

2 外部引入

  sript标签src属性引入,优先级比css高,位置一般在body内或者head到body之间,如果放置于body与html之间,或者html之外,会被自动修复置于body之内

JS注释:

  • 单行://
  • 多行:  /**/
  • html注释:单行多行都是<!-- -->
  • css注释:单行多行都是/**/

JS弹窗:

  • alert:弹出框,无返回值
  • confirm:确认框,返回true/false
  • prompt:请输入你的年龄,有2个参数1个返回值,1参是问题,2参默认结果,点击确认会返回输入结果

弹窗弹出时,代码会暂停执行直到弹窗关闭

  

JS变量:

  • 1 小写字母开始,每个单词的首字母大写
  • 2 变量不能用关键词和保留字
  • 3 变量尽量不要定义window属性名,ES5中全局变量都被设置在window的属性中(可能会数字变字符),起名时先看下是否window对象的属性名称一致
  • 4 临时变量或者参数使用下划线开始 var _time=20;

变量的连等赋值: var a = b = 20; 先给a赋值,再给b赋值

JS常量:

  一般用大写和下划线_连接,使用const关键字定义

  常量定义后的对象不能被清除,常量对象可以被修改属性,但常量对象和常量基本数据类型不能被赋值,因此常量不能用null清除引用

  

    <script>
const value = 1;
const obj = { x : 1};
// value = 2;//报错:Assignment to constant variable.
obj.x = 2;
console.log(obj);//{x:2}
obj = 2;////报错:Assignment to constant variable.
</script>

JavaScript共有7种数据类型:

  • number
  • string
  • boolean
  • null
  • undefined
  • object
  • Symbol

分类:

基本数据类型:

undefined、null、number、string、boolean是原生JS5种基本数据类型,Symbol是ES6之后加入的基本数据类型

复杂数据类型:

object是复杂数据类型

数据类型的存储:

前5种存在栈中,栈中变量名存储的是值,object存在堆中(对象数值类型也存储在堆中),栈中变量名存储的是堆中的地址

obj1 = obj;

obj1拿到的是obj的地址,不是地址中的内容,相当于拿到的是一把钥匙,而不是箱子.假设这个地址是#aaaaaa,那么开启这把箱子的钥匙就有两把,分别是obj和obj1,任何一把都能改变箱子里的内容,箱子里的内容一旦改变,那么任何一把钥匙在此后打开箱子后看到的都是改变后的值

此时obj对象的属性改变,obj1这把钥匙所能打开的箱子中的内容也改变,打开箱子之后看到的是改变之后的内容。

综上:

不论是对象还是前5原始数据类型,它们的变量名都存储在栈中

前5种基本数据类型的变量名在栈中存储的是值,但是它们的方法是通过相应的对象数据类型调用的,所以存取是栈调用,调用方法是堆调用,即对象调用

对象存储在堆中,栈中存储的对象变量名存储的是堆中的地址,堆中的属性改变,但是地址并不改变

数据类型

  数值型:
   undefined:NaN
   NaN:本身就是数值类型
   null : 0
   obj : NaN 
   string: 空串是0,Number('123'),parseInt('123') =123, Number('12a') = NaN,parseInt('12a') =12.
   boolean: true是1,false是0
        正整型 var a = 1; 
        负整型 var b = -1;
        浮点型 var c = 0.1;
        八进制数值: var d = 056;//禁用,打印时自动转换成10进制
        16进制:var e = 0xFF;
        var num6 = 1.2e+3; 1.2*1000  1.2e-3;1.2/1000
    
    布尔类型:
        boolean: true,false
    
    未定义型:
        undefined 值和类型相同都是undefined
   undefined转换成数值是NaN
   undefined转换成布尔值是false
      undefine == null是true
    空值:  
       null 类型是object
      空值转换成数值是0,转换成布尔值是false,空值==undefined是true
    
 对象
    冒号区分属性名和属性值,逗号区分各个属性
    对象转成字符串是object Object
    对象转成数字是NaN
      对象如果已赋值,转成布尔值是true
    对象如果未赋值则是undefined,转成布尔值是false
    两个对象是否相等,依据的是引用地址是否相等
    

        var obj = {x:1};
var obj2 = obj;
obj2.x = 3;
console.log(obj2 == obj);//true
console.log(obj2 === obj);//true obj = {x:1};//{x:1}是个新对象,与上个对象引用地址不等
console.log(obj2 == obj);//false
console.log(obj2 === obj);//false

JS内存管理

    前5种基础类型都存储在栈中
    对象存储在堆中
    但是它们调用的方法都是调用堆中的方法
    基础类型仅仅存取的话只在栈中
    对象的变量名(地址)存储在栈中,
    地址指向堆中的对象内容
    变量名存储的是引用地址
    var obj2 = obj;
    存在栈中的修改的是值(类型)
    存在堆中的修改的是引用地址值的内容,地址不会发生改变
    对象的传递,操作的是栈,传递的是引用
 
 

JS内存泄漏:

    栈里的东西如函数名会自动清除
    堆里面的东西不会自动清除(内存泄漏)
    内存泄漏:不断地创建新对象,不使用的旧对象不清除,造成内存泄漏
                 谷歌浏览器做了优化能自动清除一些
    如何清除对象?给变量设置为null
    不用的对象一定要赋值为null,但是常量不能被这样清除,因为已经定义的常量不能改变为null
 
 

JS垃圾回收

  对象的引用地址在栈中没有引用时,内存占比过高时,垃圾回收机制会不定时将其清除
 

数据类型的转换:

转换为数字:
        1 Number(隐式转换)
        2 parseInt\ParseFloat   parseInt(num,2):将字符串或者数字num转成2进制
  区别:
    Number()可以将任意转换成数值,parseInt()主要将字符串或者数字转换成进制数值,默认是10进制
    Number('4a')是NaN,parseInt('4a')是4
转换为字符串:
        String(a)
        obj.toString(进制)  将数字或者字符数字转换成相应进制的字符数字,默认是10进制
        ""+obj
转换成布尔值
        Boolean()
        除了0,''(或'‘),false,NaN,null,undefined是false,其他都是true
转换成对象
        null是object类型,undefined数据类型和值相同都是undefined,
  在使用Object()转换成对象类型时,object和undefined和其他都是object类型

  

  

 
 
 

27 JavaScript的引入&注释&弹窗&变量常量&数据类型及转换&内存&垃圾回收的更多相关文章

  1. 编程语言类别;运行Python程序的方式;变量和常量;Python程序的垃圾回收机制;

    目录 编程语言分类 运行Python程序的两种方式 1.交互式 变量与常量 1.变量 2.常量 3.小整数池 垃圾回收机制 编程语言分类 编程语言分为: 1.机器语言:直接用二进制的0和1和计算机(C ...

  2. .net学习之类与对象、new关键字、构造函数、常量和只读变量、枚举、结构、垃圾回收、静态成员、静态类等

    1.类与对象的关系类是对一类事务的统称,是抽象的,不能拿来直接使用,比如汽车,没有具体指哪一辆汽车对象是一个具体存在的,看的见,摸得着的,可以拿来直接使用,比如我家的那辆刚刚买的新汽车,就是具体的对象 ...

  3. (4)C#变量,常量,数据类型,转义字符,数据类型转换

    一.变量 程序运行期间能够被改变的量称为变量. 变量名称要用小写字母开头,避免用下划线开头. 如果包含多个单词,从第二个单词开始首字母都要大写. 定义并初始化 double pi = 3.14 二.常 ...

  4. 变量、数据类型、python内存管理

    pycharm快捷键 ctrl + c 复制, 默认复制整行 ctrl + v 粘贴 ctrl + x 剪切 ctrl + a 全选 ctrl + z 撤销 ctrl + f 查找 ctrl + sh ...

  5. 编程语言和python介绍, 变量,小整数池,垃圾回收机制

    1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器 ...

  6. python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件

    一.认识计算机 1.硬件组成: CPU(大脑)  + 内存(缓冲) + 主板(连接各部分) + 电源(心脏)      + 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 2.操作系统 ①windows  ...

  7. 【七天搞定Python】day01.Python环境配置、pip、IDE、注释、变量,数据类型、标识符/关键字、输出、输入

    什么是Python? 动态解释型语言,1982年由荷兰人Guido von Rossum发明. 更多细节可以google,这里不做展开. Python解释器: CPython(官方版本C语言实现) I ...

  8. Java - 变量常量数据类型

    标识符命名规范 可以有字母数字下划线和美元符组成, hello abc 不能以数字开头 123abc 严格区分大小写 void Void 不能是java的关键字和保留字 class 标识符必须是见名知 ...

  9. Dart学习笔记-变量常量数据类型

    变量和常量 1.变量的定义 main() { var t_str = 'hello world'; var t_num = 123456; String t_str2 = '你好,我很高兴'; int ...

随机推荐

  1. rocketmq4.4配置日志路径等级

    公司使用了最新的rocketmq框架,然后2天日志跑了快2个g.... 无奈网上只有4.2的教程...只好自己研究 环境rocketmq4.4 springboot 看源码找到配置日志等级和路径的地方 ...

  2. 问题 B: 奇怪的电梯

    问题 B: 奇怪的电梯 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0& ...

  3. Chrome浏览器支持跨域访问

    创建一个chrome的快捷方式,并加上参数 --allow-file-access-from-files --disable-web-security --user-data-dir="D: ...

  4. leetcode 72.编辑距离(dp)

    链接:https://leetcode-cn.com/problems/edit-distance/submissions/ 设dp[i][j]表示串s1前i个字符变换成串s2前j个字符所需要的最小操 ...

  5. js的全局变量与var关键字

    var a = '1'; 如果定义在函数外,就是全局变量.如果定义在函数内,就不是全局变量,只能在函数内调用. 但是:如果在函数内定义变量,没有加var关键字,默认表示该变量是全局的.

  6. MySQL-THINKPHP 商城系统一 商品模块的设计

    在此之前,先了解下关于SPU及SKU的知识 SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.通俗点讲,属性值.特性相同的商品就可以称为一个SPU. ...

  7. Codeforces Round #624 (Div. 3) C. Perform the Combo(前缀和)

    You want to perform the combo on your opponent in one popular fighting game. The combo is the string ...

  8. js的基本分类(0.1)

    js分内嵌,内联,外部样式表三种, js的组成分,ES(变量,函数,对象,数组,判断,循环),BOM(浏览器对象模型),DOM(文档对象模型), js的五种输出语句,alert(警告框),confir ...

  9. Docker 上安装、启动 MySQL

    在docker仓库中搜索mysql的镜像: docker search mysql ; 下载镜像,这里我们安装 5.7 版本 docker pull mysql:[TAG]; 不写TAG默认拉取最新版 ...

  10. 01hive基础操作

    一. Hive基础概念 我自己本人一开始学习Hive的时候,最大的疑问就是hive和hbase到底有什么区别?(因为自己本身学校课程设置问题有了解到一丢丢hbase的知识) 所以先甩一篇博客提供给跟我 ...