Javascript 基础—变量 运算符

经过找工作笔试的洗礼,感觉自己js语法方面掌握的不是很系统,今天来梳理下——变量以及运算符。

基础篇

和C语言的不同点:是一种弱类型语言,申明变量时不需要指定类型;变量名的命名方法也有不同;简单类型种类也有不同;类型可以相互转化

1.命名

是以字母,_,$开头的,由数字,字母,下划线 $组成的,不包括关键子,区分大小写的串称为标识符(加入了美元符号,不能以数字开头啦)。

2. 申明

形式:var  keyname; 可以多个一起申明,可以申明时初始化。

eg: var obj; var arr=[], objArr={};

注:(1)不需要申明类型,会根据程序的运行 自动转换类型。(2)没有定义就使用的,会报错;申明了,没有赋值的是undefinedd类型;(3)没有使用var申明的是全局变量,关于全局变量下面会具体分析。

3.变量类型

简单类型:boolean  string  number  undefined null

注意点:

boolean:其值是true,false 也会转换为 0,1 使用, Isload()==1;

string: 当个字符,或者字符串都是string类型;可以用单引号或者双引号都可以var str='adafsd', str2="abc",其他同C语言;

number:表示 整数,小数;整数包括十进制,八进制(078),十六进制(ox78);数字常量:(Infinity 表示正无穷大  NaN 表示非数字)

null:是空类型,只有一个值null.表示没有数据。

复杂类型:Array  object

Array:是数组类型,可以用下标访问,如:var  t=[a,b,c];可以是复杂数组类型:var t=[{a=b},{a2=b}]

object: 对象类型,可以表示对象的 属性 -值 ,键值对。可以嵌套任意类型。访问用.进行访问。

4.传值和传址

当变量时简单类型时,是传值的;如果变量时复杂变量时,是传址的,及,传递的是原对象的引用(可以是指针,或者别名,指向的是原对象的的内存空间)。

5. 堆栈

简单类型 存放在栈中,复杂类型存放在堆中,通过引用来操作;栈比堆快,栈可以共享,栈中的内容生存周期是和上下文相关,离开上下文就消亡。这里提到了共享.

eg: var a="abc" ;var b="abc";  这时 a===b(true);因为 abc存放在栈中,可以共享。

   var a=new string("abc"); var b="abc"; var c=new string("abc"); 这时 a!==b!==c;在堆中时运行是分配内存,不可以共享,并且堆中的东西和栈中更不相等。

顺便 说下,内存管理。javascript中有内存管理机制,只要是没有人再引用这个单元时,垃圾回收机制(GC)会自动收回内存。

垃圾回收:主要通过标记法和引用法两种方式。标记法策略:当变量进入一个上下文就为变量标记为“进入环境”,离开上下文就标记为“离开环境”,垃圾回收机制为每个在内存中的变量都进行标记,他会为每个进入上下文的变量或者引用的变量进行清除标记,如果在这之后加上的标记就表示是准备删除的数据。GC会回收内存,清除标记。引用法:记录引用他的次数,不引用时减1.

内存泄露:虽然有内存管理机制(和java类似),但是也存在内存泄露的情况。比如闭包。

 


提升篇

主要总结 数据类型转换,变量作用域,相关内容

   1.类型转换

    分类:分为显示转换和隐式转换

a 、显示转换

转换为数字:Number(); parseInt(stirng,radix);parseFloat(string);

转换为字符串:String(); toString();

转换为布尔类型:Boolean(mix);

 

Number()规则

 Number(Null)===0;

Number(undefinde)=NaN;

Number("")===0;

Number(boolean)===0/1;

Number(string):当只包含数字时返回数字;当包含数字是float类型时,返回小数;空字符串返回为0;否则返回为NaN

b 、隐式转换

1.递增符号的转换

    1.  当变量时字符串时,会根据Number()规则,转换成数字,然后加++,--; 字符串中没有数字转换为NaN

    2.  当变量时boolean时,会转换为0,1 ,进行++ --操作,变量从boolean 变为数字型。

    3.Float 会自动+1;

 

 

 

 

总结:NaN,void,undefined,null ,以及常规的boolean-》0,1

NaN 运算符NaN(其他)结果为NaN(NaN是数字型,但是不是数字,每次都是计算机给分配的随机值,NaN===NaN(false))

null==undefined(true)在类型转换时unfinished=》null

null===undefined(false) 两个是不同的类型,不相等

void(任意):void  d ; 会将d的值清除 返回undefined,(void 返回undefined)

‘''=='0'(false)

"0"==0(true)

""==0(true)

 void(2)+4=NaN (void(2)=>undefined=》NaN+4=NaN)

 2. 作用域提升

变量必须要定义之后才能使用,但是在一个作用域中,如果先用,再定义也不会报错,只是出来的结果会不是想象中的。这个就是变量作用域提升。

原理:函数调用时,会建立上下文,(1)声明参数,并给参数赋值,(2)声明函数并给函数符函数的引用(3)声明变量,给变量赋值undefined(对于函数名和变量名重名的情况,会忽略变量的声明,变量名依然指向函数的引用)

然后才会处理this的指向,最后调用执行;可见在执行之前会将函数内部的所有变量声明,只是赋值为undefined,具体赋值要在执行期做。

所以类似 eg: alert(t); var t=30; alert(t); 输出: undefined 30

转载于:https://www.cnblogs.com/xuruweb/p/4027377.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后台系统可扩展性学习笔记(五)负载均衡

文章目录Load balancer(负载均衡器)请求传输拆解DNS 负载均衡客户端负载均衡OSI 七层模型回顾2 层、3 层负载均衡3/4 层负载均衡7 层负载均衡在 第一节谈到了系统的横向扩展在于从单机扩展到多机,那么面临的第一个问题就是这些机器如何协同工作,即如何调…

Struts2第一个工程helloStruts极其基本配置

前面已经准备好了Struts-2.3.15,现在就可以直接搭建Struts2的工程了。前面http://blog.csdn.net/huangchnegdada/article/details/9179041有对Struts-2.3.15的准备工作的详述。 首先打开MyEclispe新建一个Web Project,名字就叫Struts2_0100_Introduction…

[LeetCode]Find Minimum in Rotated Sorted Array

题目描述: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in the array. 解题方案: 直接贴代码&…

后台系统可扩展性学习笔记(六)反向代理

文章目录Web代理服务反向代理反向代理作用Web代理服务 Web 代理服务指的是在客户端资源请求和提供这些资源的 Web 服务之间充当中介的角色,代理服务可以实现在客户端,或者从客户端到目标服务器中间的任意环节。 例如,客户端不直接向提供目标…

(C)单链表

老师版 1 #include <stdio.h>2 #include <stdlib.h>3 4 // 定于Node数据类型5 struct Node6 {7 int data; // 数据域8 struct Node *next; // 指针域9 };10 11 // 创建一个单链表&#xff0c;并把head节点返回&#xff1b;…

实验:sigsuspend(),sigprocmask()

实验&#xff1a;sigsuspend(),sigprocmask()源代码&#xff1a;/* * Program: pause_suspend.c * To test the difference between sigsuspend() and paus(). * Author: zsl * Date: 2014-10-17 * First release. * 参见网页&#xff1a;http://blog.csdn.net/liwentao1091/ar…

后台系统可扩展性学习笔记(七)Service Discovery与微服务

文章目录应用层微服务架构服务注册查询 Service Discovery客户端 Service DiscoveryDNS-SD DNS-based Service Discovery服务端 Service Discovery服务注册与注销自注册模式第三方注册模式总结参考应用层 在简单的 3 层结构中&#xff0c;Web 服务层既要处理请求&#xff0c;又…

很久没写代码了,这(那)几天真是累死了。。。先写一个幻方的程序吧

1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 5 #define EVEN_DOUBLE_4 4 //双偶的最基本类型&#xff0c;4阶双偶6 #define SCREEN_SIZE 19 //屏幕显示不变形的最大尺寸&#xff08;主要是因为窗口大小限制&#xff09;7 #defi…

#pragma once

http://baike.baidu.com/view/1276747.htm?fraladdin 转载于:https://www.cnblogs.com/prayer521/p/4069040.html

后台系统可扩展性学习笔记(八)Service Mesh

文章目录网络传输可靠性将微服务控制下沉到网络栈&#xff1f;Sidecar从 Sidecar 到 Service MeshService Mesh 部署平台参考网络传输可靠性 从计网的学习过程中我们可以知道数据在网络传输中可能会出现一些异常状况&#xff1a; 数据丢失&#xff1a;数据包可能会到达一个缓…

关于Spring batch的学习之CSV2DB

最近在学习Spring batch相关的内容&#xff0c;网上也有不少Spring Batch相关的知识&#xff0c;不过大多都是使用xml进行配置的。这里是我用注解的方式进行相关的学习心得。 首先我们来看如何将一个文本文件中的内容导入到数据库中。 我们先来看一下我们所需要的环境。我们这里…

后台系统可扩展性学习笔记(九)Database Replication

文章目录数据库扩展一致性问题Replication &#xff08;复制&#xff09;异步复制同步复制半同步复制拓扑结构单主结构多主结构无主结构复制具体措施参考数据库扩展 之前在第一章后台系统可扩展性学习笔记&#xff08;一&#xff09;概要谈到&#xff1a;理论上&#xff0c;有…

python中的sum函数.sum(axis=1)

看起来挺简单的样子&#xff0c;但是在给sum函数中加入参数。sum&#xff08;a&#xff0c;axis0&#xff09;或者是.sum(axis1) 就有点不解了 在我实验以后发现 我们平时用的sum应该是默认的axis0 就是普通的相加 而当加入axis1以后就是将一个矩阵的每一行向量相加 例如&…

后台系统可扩展性学习笔记(十)Database Partitioning

为了提升数据库的处理能力&#xff0c;我们把单库扩展成多库&#xff0c;并通过更新同步机制&#xff08;即Replication&#xff09;来保证多份数据的一致性。然而&#xff0c;在 各种复制方案下&#xff0c;每个数据库都持有一份完整数据&#xff0c;基于全量数据提供增删改查…

基于FPGA的HDTV视频图像灰度直方图统计算法设计

随着HDTV的普及&#xff0c;以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期。与传统CRT电视不同的是&#xff0c;这些高清数字电视需要较复杂的视频处理电路来驱动&#xff0c;比如&#xff1a;模数转换&#xff08;A/D Converter&#xff09;、去隔行&#xff08;De-interla…

后台系统可扩展性学习笔记(十一)Database Denormalization

之前的两篇笔记中谈到了从单库扩展到多库以承载更多的请求量以及单库&#xff08;表&#xff09;拆分成多库&#xff08;表&#xff09;&#xff0c;打破单库的性能瓶颈。 这都是为了应对大数据量下的措施。 然而&#xff0c;除却数据量外&#xff0c;还有一个极其影响单库性能…

Java Swing 影楼管理系统之登录功能

开头打广告&#xff0c;Java1234.com。 首先&#xff0c;来个效果图。 关键代码 1&#xff0c;界面层 private void Jb_DengLuActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:String UserName this.Jb_UserNameTxt.getText();String …

Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

【电脑软件管理中Bdsyn手机助手的问题】Bdsyn手机助手 is developed by Baidu, Inc. and is used by 10 users of Software Informer. 并不是本人安装的&#xff08;应该是自己自己主动安装的&#xff09;&#xff0c;卸载以后过几天又会出如今软件列表里。百度搜索却无法搜索出…

后台系统可扩展性学习笔记(十二)NoSQL

文章目录NoSQL定义NoSQL种类键值存储文档存储宽列存储图形数据库NoSQL 意味着什么ACID vs. BASESQL or NoSQLNoSQL定义 不同于关系型数据库&#xff0c;NoSQL 数据库&#xff08;也叫非 SQL 或非关系型数据库&#xff09;提供的数据存储、检索机制并不是基于表关系建模的。没有…

android2.2应用开发之IccCard(sim卡或USIM卡)

tyle"margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51,51)"> 如果要做android通讯录的联系人的机卡混排显示&#xff0c;由于手机卡类型的不同&#xff0c;导致手机卡存储容量以及可以存储信息不同&#xff0c;就要涉…