对与刚接触javascript的童鞋来说,尤其是学过java的同学,一时半会还需要对javascript的语法格式需要一段时间的适应。
以下内容只是鄙人的一些粗浅总结,希望看过的觉的不足之处可与我探讨,我会通过与java语言的对比,加深对javascript的理解和学习,相信会有所裨益。
关于javascript的变量声明
首先,java变量的声明,是需要同时声明变量类型的,而javascript与java最只要的一个区别是:untype(非类型),也就是什么变量都能装。一个javascript变量,你可以先赋值数字,然后再赋值一个字符串,这是完全合法的,不管何种类型的变量(数字,Array,对象,String)统一用 var标识符进行声明。
var i = 30;
var i = "hello,javascript!";
当我们,声明变量但没有初始化,其变量的值为“undefind”,在java中没有初始化的变量其默认值是根据其变量类型来指定的。
使用var语句对同一个变量进行多次声明是合法的,如果其多次声明有初始值,那么var语句将会是赋值语句的角色。(小知识点,知不知道都无所谓)。
如果读取一个未声明变量,javascript会报错。
如果没有var一个变量,其会隐式的为其声明, 比如直接写: i=0; 是可以的。但要注意的是,隐式声明变量只会将变量声明为全局变量,哪怕这个变量在一个函数内。如:
function a(){
i=100;
}
就相当于:
var i; //隐式声明
function a(){
i=100;
}
红色的部分是隐式的,也就是说即便你不写这一句,程序是不会报错的,但会不会改变程序初衷,就不一定了,而在java中这是不允许的。值得注意的是,即便这样,我们还是最好在声明变量时加上var,防止在一个函数体内声明一个局部变量时变成全局变量,与程序中现有的全局变量冲突,改变了程序的初衷。
说道函数,说一些题外话,在javascript中函数中不仅可以调用函数,也可以嵌套定义函数,也就是说函数体内可以定义函数,在java中只能函数中调用函数,不可定义函数。
javascript函数中定义的变量,在整个函数体内都有作用,只有函数结束,才失去作用。如以下代码:
function test(o){
var i = 0;
if(typeof o == "object"){
var j = 0;
for(var k = 0; k < 10; k++){
document.write(k);
}
document.write(k);
}
document.write(j);
}
如果上面是一段java代码,红色标识的代码,那么编译不会通过,system.out.print(k);k一定没有声明,在java语法中k的作用域只在for循环语句中,for循环结束,那么k的生命周期也就结束。同理j也一样,它的生命周期只在if语句块中。但是在javascript中,这是合法的。比较容易让人难以理解,记下来就好,千万别和java搞混。
未定义的变量和未赋值的变量
在js开发中,在读取或引用某些变量时总会发生一些莫名其妙的状况,多数问题是因为某些变量没有定义或者赋值,也或许是因为经常将未赋值和未定义的变量弄混,以至于不能很好的控制这两种不同类型的未定义变量。
第一种,前面说过,为未经过声明的变量赋值,程序会隐式的在全局作用域中声明成全局变量。
第二种,是已经声明了,但是永远都不会被赋值的变量,如果要读取这样的变量的值,将会得到一个默认值undefind,前面也说过。
最后,undefind 和java中的null是不一样的,javascript中也有null这个值。
分享到:
相关推荐
在循环体内声明变量会导致每次迭代都会重新声明变量,这会影响性能。正确的做法是在for循环之前声明变量,并尽可能减少循环体内的操作,比如减少DOM操作的次数。 全局变量的使用也应该尽量减少。全局变量可能会与...
在严格模式下,某些原本被忽略的错误会得到报错提示,比如未声明变量的使用、对只读属性赋值等。这有助于开发者编写出更加严谨的代码,并提前发现潜在的错误。 5. 数据类型和比较运算符 JavaScript中的变量可以...
JavaScript是一种弱类型的语言,这意味着变量在声明时不需要指定类型,而类型是在运行时自动确定的。它支持基本数据类型如数字(Number)、字符串(String)、布尔值(Boolean)、空值(null)和未定义值(undefined),以及...
1. **变量声明**:JavaScript中的`var`, `let`, `const`各有用途。`var`在函数作用域内,可能导致意外的全局变量;`let`和`const`则在块级作用域内,`const`用于声明不可变的常量。 2. **数据类型**:JavaScript是...
此外,他还探讨了类型转换的细节,因为JavaScript是一种动态类型语言,类型转换可能导致意料之外的行为。运算符的使用也被详细讲解,包括它们的优先级和潜在的陷阱,例如赋值运算符与比较运算符的混淆。最后,分号...
描述部分则强调了JavaScript语言的灵活特性,即使用var声明变量可以适用于不同类型,但同时也提出了编写优雅JavaScript代码需要经验积累。这说明学习JavaScript不仅仅是语法和基础知识的掌握,更多的是对语言特性的...
2. **语法结构**:手册将详细介绍JavaScript的基本语法,包括变量声明(var、let、const)、数据类型(字符串、数字、布尔、null、undefined、对象、数组、符号)、运算符(算术、比较、逻辑、位、赋值)以及流程...
它包括变量声明、数据类型(如字符串、数字、布尔值、对象等)、操作符、流程控制(如条件语句、循环)以及函数等基本概念。 二、DOM操作 JavaScript能够通过Document Object Model (DOM)来操纵HTML元素,这是实现...
- **弱类型**: 相较于强类型语言,JavaScript不需要在代码编写时严格声明变量类型,赋予灵活性。 - **解释与编译**: JavaScript代码执行前通常经过解释器转换成机器码,但在某些环境下也可能经历预编译阶段。 ###...
由于提供的文件信息中,【标题】和【描述】并未给出具体的内容细节,仅提供了文档名称和版权声明,并且【部分内容】中提供的链接信息重复,并不构成实际的文本内容,因此无法从中提取具体的知识点。不过,由于【标题...
var声明的变量有函数作用域或全局作用域,而let和const是块级作用域,且const声明的变量一旦赋值后不可修改。变量的类型包括基本数据类型(如字符串、数字、布尔等)和引用数据类型(如对象和数组)。 **内置常量**...
JavaScript是一种动态类型的语言,这意味着在声明变量时不需要指定变量的类型。对于初学者来说,理解如何有效地组织和编写代码至关重要。以下是一些关于如何简化JavaScript代码的技巧: 1. **对象的创建**: - **...
1. **变量类型**:虽然JavaScript是一种动态类型语言,但在声明变量时可以指定其初始值,间接定义了变量的类型。 2. **变量声明关键字**:使用`let`、`const`和`var`关键字来声明变量。其中,`let`和`const`是在ES6...
- **语法和数据类型**:介绍JavaScript的基本语法结构,包括变量声明、数据类型(如数字、字符串、布尔值)、运算符等。 - **控制结构**:讲解条件语句(if...else)、循环(for、while)以及异常处理(try...catch...
第四章“语法概述”详细讲解了JavaScript的基本句法,包括语句、变量、变量提升、标识符、注释、区块以及条件和循环语句。同时,该章还探讨了数据类型的概念,包括原始类型和合成类型、字符串、布尔值以及typeof...