💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
**变量** JavaScript的变量是松散类型的,他不像JAva那样具有很严格的定义规范,所谓松散类型就是可以用来保存任何类型的数据,换句话说,每个变量仅仅是保存值的一个引用而已。定义变量时使用var操作符,后跟变量名,这个变量可以存储任何值,像这种未经定义的变量,会保存一个特殊的值-undefined,当我们定义了变量的值之后,初始化始也只是为这个变量赋了一个值而已;例如下面的: ~~~ <script> var string="hello,world"; alert(string); </script> ~~~ 这段代码只是在初始化的时候为他赋了一个值而已,并不会根据类型而把他标注为字符串类型的;另外要注意的是,我们再声明变量的时候也可以不使用var 关键字,这样也不会出错,但是并不推荐,我们也可以在修改变量的同时修改值的类型,但是也不推荐; ~~~ <script> string="hello,world"; string="123" alert(string); </script> ~~~ **数据类型** 在ECMAScript中有五种基本简单数据类型,(我们的java有八大基本数据类型。。)分别是:undefined,Null,Boolean,number,String。还有一种复杂数据类型-Object,object本质上是一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据类型之一。乍一看,好像只有6中数据类型不足以表示所有数据;但是,由于ECMAScript数据具有动态性,因此的确没有再定义其他数据类型的必要了。 我们可以使用typeof操作符来检验返回值的类型。 ~~~ <script> var test1; alert(typeof test1); //undefined 如果这个值未定义; var test2=true; alert(typeof test2); //boolean布尔值; var test3="abc"; alert(typeof test3); //string 如果这个值是字符串; var test4=123; alert(typeof test4); //number 如果这个值是数值; var test5=new Object(); alert(typeof test5); //object如果这个值是对象; function test6(){}; alert(typeof test6); //function 函数类型,声明的时候不要带var </script> ~~~ **Undefined类型:** Undefined类型只有一个值,即特殊的undefined,在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined;这个跟java有所不同; **Null类型:** Null类型是第二个只有一个值的数据类型,这个特殊的值是null,从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回“object”的原因,如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,而表示其他值。这样一来,只要直接检查null值就可以知道对应的变量是否保存了一个对象的引用; 实际上undefined值是派生自null值的;即undefined==null --true; **Boolean类型:** Boolean类型是ECMAScript中使用的最多的一种类型,该类型只要两个字面值:true和false,虽然Boolean类型的自面值只要两个,但是JavaScript的所有类型的值都可以转换为Boolean值;使用Boolean(); ~~~ var test1="Hello world!"; if(Boolean(test1)){ alert(test1); }; ~~~ 这一章,我们了解了JS的基本数据类型,下一次再深入去理解一下数值型和Object这两个特殊的类型吧;