博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript学习笔记一基本数据类型与变量声明
阅读量:4658 次
发布时间:2019-06-09

本文共 1648 字,大约阅读时间需要 5 分钟。

Javascript变量的数据类型

Javascript有6种基本类型,也叫基础类型或元类型分别是:

  1. undefined 未定义 值类型

  未声明的变量或声明过但未赋值的变量的值为undefined。也可以显式或隐式的给变量赋值为undefined

  2. number 数值 值类型

  除赋值操作外,只有数值与数值的运算结果是数值;一些函数或方法的返回值是数值

  3. string 字符串 值类型

  不能直接读取或修改字符串中的单一字符,字符串在赋值运算中会按引用类型的方式来处理

  4. boolean 布尔值 值类型

  true/false

  5. function 函数 引用类型

  Javascript中的函数存在多重含义,包括函数、方法、构造器、类及函数对象

  6. object 对象 引用类型

  基于原型继承的面向对象,因为不具备对象系统的全部特性,Javascript通常被称为基于对象而非面向对象的语言。

任何一个变量或值的类型都可以使用typeof运算得到。typeof关键字是保留关键字,其调用形式如下:

var str = “abc“;
alert(
typeof str)
//
或者
alert(
typeof(str))

 变量的声明

Javascript中变量的声明有两种方法:

1. 显示声明

var 关键字进行声明即显示声明如:

var str = “abc“;

当然函数声明及异常捕获字句中声明的异常对象也是显示声明:

function foo(){
}
try{
}
catch(ex){
}

2. 隐式声明

隐式声明通常发生在不使用关键字var的赋值语句中,如:

str = “abc“;

解释器对隐式声明的理解为:如果变量未被声明,则先声明该变量并立即赋值;如变量已声明,则该语句是赋值语句

变量的作用域

作用域有全局作用域及局部作用域,全局变量的作用域当然是全局作用域(貌似是废话),函数内部声明的变量是局部变量,作用域也

是函数体这一局部内。

var str = "abc";
function foo(){
 
var str = "def";
 document.write (str);
}
foo();      
//
输出def
document.write (str);  
//
输出abc

全局变量的声明可以不使用var 关键字,但在局部变量的声明中一定要使用var关键字,否则会视为对全局变量的引用或声明了全局

变量,如下代码所示:

var str = "abc";   
//
改行存在与否不影响最终输出
function foo(){
 str = "def";
 document.write (str);
}
foo();      
//
输出def
document.write (str);  
//
输出def

Javascript 没有块级作用域一说,函数中声明的变量在整个函数中都是有定义的,看下面的代码:

function foo(){
 document.write(str); 
//
语句A
 
var str = “abc”;
 document.write(str); 
//
语句B
 document.write(i);  
//
语句 C
 
for(
var i = 0; i< 4; i++){
  
 }
 document.write(i);  
//
语句 D
}
foo();     
//
A输出 undefined,B输出 abc ,C输出 undefined,D 输出 4

在变量声明之前输出,出现 undefined,是因为Javascript 会将所有的变量及函数声明提升到作用域的顶部,提升只会提升声明,

而赋值不会提升,另外注意:函数提升,只会提升函数的声明方式,表达式形式的则不会提升。

 

转载于:https://www.cnblogs.com/kdalan/archive/2012/11/15/2772396.html

你可能感兴趣的文章
Spring----工厂注入和bean的生命周期
查看>>
随机点名器
查看>>
React Native入门 认识Flexbox布局
查看>>
LINUX平台可以用GDB进行反汇编和调试。
查看>>
kvm 虚拟化的使用
查看>>
一个删除磁盘文件的恶意软件分析
查看>>
react组件里阻事件冒泡
查看>>
Maven中的dependencyManagement 意义
查看>>
Navicat连接oracle,出现Only compatible with oci version 8.1 and&nb (转)
查看>>
Target runtime com.genuitec.runtime.generic.jee60 is not defined
查看>>
为什么要使用NoSQL
查看>>
第二次Soring冲刺计划第五天(团队)
查看>>
使用反射、特性简化代码
查看>>
emoj表情插入mysql,取出mysql的处理工具类
查看>>
jdk环境搭建
查看>>
学习算法之路(转)
查看>>
java中构造方法及其作用
查看>>
实现Magento多文件上传代码功能开发
查看>>
HttpURLConnection
查看>>
包与模块--内置
查看>>